Windowsストアアプリケーション(別名Metro)用の単純なユーティリティコレクションを持っていますが、連続して呼び出すとハングしているように見えますApplicationData.Current.LocalFolder.GetFileAsync
(つまり、デバッグしてステップスルーしようとすると、問題は解消されます) 。
public static async Task<LocalCache<T>> LoadCache()
{
try
{
// Get the input stream for the cache
StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync(GetFileNameForType());
using (IInputStream inStream = await file.OpenSequentialReadAsync())
{
// Deserialize the cache
DataContractSerializer serializer = new DataContractSerializer(typeof(LocalCache<T>));
return (LocalCache<T>)serializer.ReadObject(inStream.AsStreamForRead());
}
}
catch (FileNotFoundException)
{
return new LocalCache<T>();
}
}
ファイルを開くモードを指定するためのオーバーロードはないようで、戻ってこないように見えるので、ちょっと困惑しました。このデッドロックを防ぐにはどうすればよいですか?