异步方法似乎在Windows Phone上不起作用
本文关键字:Phone 不起作用 Windows 异步方法 | 更新日期: 2023-09-27 18:36:54
我有以下一段代码(WPF,Windows Phone 8.1):
HttpClient client = new HttpClient();
var httpResult = client.GetAsync(feed.Url, ct);
string feedData = await httpResult.Result.Content.ReadAsStringAsync();
var sf = new SyndicationFeed();
sf.Load(feedData);
我正在尝试调试此代码。但是,在该行之后:
string feedData = await httpResult.Result.Content.ReadAsStringAsync();
调试器似乎让应用程序自行运行,并且永远不会到达下一行。为什么?我做错了什么吗?
根据您是在调用结果还是在上游的某个地方等待任务,这可能会导致死锁,如 Stephen Cleary 的博客文章中所述。
通过等待client.GetAsync()
来缓解此问题,并在可能的情况下使用ConfigureAwait
来最大程度地减少死锁的可能性:
HttpClient client = new HttpClient();
var httpResult = await client.GetAsync(feed.Url, ct).ConfigureAwait(false);
string feedData = await httpResult.Content.ReadAsStringAsync().ConfigureAwait(false);
var sf = new SyndicationFeed();
sf.Load(feedData)