异步任务死锁

时间:2017-03-17 10:48:20

标签: c# asynchronous async-await httpclient

我有一个与.Result属性一起使用的异步方法,但在使用await关键字时则不行。我认为使用等待而不是结果是正确的。我错了吗?

VariableString = "Informe - "& TEXT(C9;"aaaa/mm/dd") &" - "& TEXT(G9;"aaaa/mm/dd")
ActiveCell.Formula = "=" & VariableString 

上面代码中的客户端是HttpClient,ParseJson方法如下:

// doesn't work - hangs
protected async Task<T> GetAsync<T>(string uri) =>
    await ParseJson<T>(await Client.GetAsync(uri));

// works
protected async Task<T> GetAsync<T>(string uri) =>
    await ParseJson<T>(Client.GetAsync(uri).Result);

代码正在asp.net mvc应用程序中运行,如果这有任何区别。

更新 固定。谢谢: @Igor - 你是对的,调用方法的MVC控制器动作不是异步的,因此使用.Result而不是等待。 @Panagiotis - 我已经将你的代码拆分了,因为你建议让它更易于调试。

0 个答案:

没有答案
相关问题