我只是用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;
}