2
我有一个UWP应用程序,我试图从本地文本文件存储和检索一些数据,但无论我如何尝试这样做,应用程序都会死锁。由于需要同步的东西发生,我尝试使用任务并等待其完成,但是应用程序仍然锁定。如何解决这个僵局?
我在叫“的MainPage” UWP应用和它的构造函数有一个网页,我有以下代码:
var listenkeyViewModel = new ListenkeyViewModel();
listenkeyViewModel.GetKey();
listenkey = listenkeyViewModel.Listenkey;
的get关键是这里的问题,因为它调用视图模型的方法(这我创建是同步的,因为我认为进行调用同步尽快将是可取的。
public void GetKey()
{
try
{
var listenKeyTask = RetrieveListenKey();
_listenkey = listenKeyTask.Result;
}
catch (Exception e)
{
}
}
public static async Task<string> RetrieveListenKey()
{
try
{
var storageFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
var listenkeyFile = await storageFolder.GetFileAsync("listenkey.txt");
return await Windows.Storage.FileIO.ReadTextAsync(listenkeyFile);
}
catch (Exception e)
{
throw new Exception("Could not load file");
}
}
我知道事情是“异步一路下跌”,但在这里,这是不可能的。我不能让构造,其中原始代码是异步的,你好吗?应该不会陷入僵局?我不明白。
将代码从构造函数中移开。使用像“InitializeAsync”之类的异步方法。这是最好的解决方案。 –