可能重复:
WinRT: Loading static data with GetFileFromApplicationUriAsync()
我的应用程序中的以下代码被调用,但它永远不会返回,或者抛出异常:
public async Task Load()
{
...
StorageFile file =
await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///" + name));
...
}
这就是我调用方法的方法:
x.Load().Wait();
为什么等待的方法GetFileFromApplicationUriAsync()
永远不会返回?
答案 0 :(得分:11)
当您(同步)阻止异步代码时,您run into a deadlock problem。
遵循以下最佳做法:
ConfigureAwait(false)
(例如Load
)。async
;不要阻止async
代码。在您的情况下,听起来Load
可能会被称为启动的一部分。这是异步做的有点棘手(因为构造函数可能不是async
)。但是,您应该可以使用asynchronous lazy initialization来使其工作。