FileIO.ReadTextAsync иногда зависает
Я просто экспериментирую с WinRT и одним демонстрационным приложением, которое я создаю, - это базовый «блокнот». приложение стиля, которое загружает / сохраняет в локальное хранилище. Пока я знаком сasync
подход для создания приложений WinRT, мое демонстрационное приложение использует синхронныйLoad
чтобы все было просто.
Проблема заключается в том, что когда звонятLoad
работает 2 раза из 3, а остальное время приложение зависает на вызовеvar result = await FileIO.ReadTextAsync(storageFile);
public class ContentStorage : IContentStorage
{
private const string FileName = "contents.txt";
public string Load()
{
return LoadAsync().Result;
}
public void Save(string content)
{
SaveAsync(content);
}
private static async Task<string> LoadAsync()
{
var storageFile = await LocalFolder.GetFileAsync(FileName);
var result = await FileIO.ReadTextAsync(storageFile);
return result;
}
private static async void SaveAsync(string content)
{
var storageFile = await LocalFolder.CreateFileAsync(FileName, CreationCollisionOption.ReplaceExisting);
FileIO.WriteTextAsync(storageFile, content);
}
private static StorageFolder LocalFolder
{
get { return ApplicationData.Current.LocalFolder; }
}
}
Я делаю что-то необычайно глупое здесь?
FWIW, я экспериментировал с изменениемLoad
просто явно блокировать на каждом шаге, и это улучшает зависание до 1 из 20, но я все еще не понимаю, почему оно вообще зависает ...
public string Load()
{
var storageFile = LocalFolder.GetFileAsync(FileName).AsTask().Result;
var result = FileIO.ReadTextAsync(storageFile).AsTask().Result;
return result;
}