我有这个问题:有一个函数发出http请求并返回数据流。我在控制台应用程序中测试了它 - 一切正常。现在,我将其添加到我的 wpf 应用程序中,但它冻结了 - serverAnswer fetch 命令未执行。没有错误或异常。程序似乎正在运行,但静止不动 请告诉我一些事情。
功能:
public async Task<Stream> GetStream()
{
HttpClient CV18Client = new HttpClient();
var serverAnswer = await CV18Client.GetAsync(adress, HttpCompletionOption.ResponseHeadersRead);
return await serverAnswer.Content.ReadAsStreamAsync();
}
最可能的情况 - 您的 WPF 应用程序冻结,因为 UI 线程正在等待任务(Web 请求)完成,但它在另一个线程中完成。为了确保您的任务结果将在其启动的线程中返回,您可以将
.ConfigureAwait(true);
附加到异步调用中。所以会是这样的:var myStream = await myApiClient.GetStream().ConfigureAwait(true);