:
private static List<string> mContentFilenames = new List<string>();
private static void preloadContentFilenamesRecursive(StorageFolder sf)
{
var files = sf.GetFilesAsync().AsTask().ConfigureAwait(false).GetAwaiter().GetResult();
if (files != null)
{
foreach (var f in files)
{
mContentFilenames.Add(f.Path.Replace('\\','/'));
}
}
var folders = sf.GetFoldersAsync().AsTask().ConfigureAwait(false).GetAwaiter().GetResult();
if (folders != null)
{
foreach (var f in folders)
{
preloadContentFilenamesRecursive(f);
}
}
}
private static void preloadContentFilenames()
{
if (mContentFilenames.Count > 0)
return;
var installed_loc = Windows.ApplicationModel.Package.Current.InstalledLocation;
var content_folder = installed_loc.GetFolderAsync("Content").AsTask().ConfigureAwait(false).GetAwaiter().GetResult();
if (content_folder != null)
preloadContentFilenamesRecursive(content_folder);
}
private static bool searchContentFilename(string name)
{
var v = from val in mContentFilenames where val.EndsWith(name.Replace('\\', '/')) select val;
return v.Any();
}
更新
しかし、デバッガがある場合にのみ、このコードを使用します添付の。私はマイクロソフトの労働者を過小評価しました。彼らはあなたのデバッグを地獄にしてうれしいです。彼らの不規則なエラー処理とisFileExist関数の欠如は、ファイルを再帰的にisFileExistを自分で例外なく実装するようにしますが、 - surprize - デバッガが添付されていない場合、このコードは何も例外なくwhitoutを終了させます。また、アプリケーションがクラッシュする前に、ファイルの乱数をチェックするので、問題は特定の方法ではなく、「多くのファイルを確認できません」、つまりいくつあるのかは時々刻々と異なります。
実際のWP8.1デバイス上に(小または大)アプリケーションを起動するケースの50%でVSがクラッシュし、デバイスファイルシステムへのアクセスがないという事実を考慮して、クラッシュの根。私はそれのためにほぼ一日を過ごしました!
Btwは、Windows、Windowsストア、Windows Phoneアプリで20年以上働いていて、私は実際に目を見るためにmsftから誰かに会いたいと思っています。それが何であるかを知るには - 愚かさやサディズム?彼らは本当に私たちの開発者を憎んでいますか?どうして?