异步方法似乎在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();

调试器似乎让应用程序自行运行,并且永远不会到达下一行。为什么?我做错了什么吗?

异步方法似乎在Windows Phone上不起作用

根据您是在调用结果还是在上游的某个地方等待任务,这可能会导致死锁,如 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)