FileIO.ReadTextAsync ocasionalmente trava
Estou apenas experimentando com o WinRT e um aplicativo de demonstração que estou criando é um aplicativo básico de estilo "notepad" que carrega / salva no armazenamento local. Enquanto eu estou familiarizado com o bomasync
abordagem para a criação de aplicativos WinRT, meu aplicativo de demonstração está usando um síncronoLoad
para manter as coisas simples.
O problema é que quando uma chamada é feita paraLoad
, funciona 2 de 3 vezes e o resto do tempo que o aplicativo trava na chamadavar 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; }
}
}
Estou fazendo algo extraordinariamente estúpido aqui?
FWIW, eu experimentei mudarLoad
para bloquear explicitamente em cada etapa e isso melhora o pendurar para 1 em 20, mas eu ainda não entendo porque está pendurado em tudo ...
public string Load()
{
var storageFile = LocalFolder.GetFileAsync(FileName).AsTask().Result;
var result = FileIO.ReadTextAsync(storageFile).AsTask().Result;
return result;
}