在哪里使用await关键字 - C#

时间:2016-05-26 22:55:45

标签: c# asp.net-mvc

我正在尝试从MVC应用程序中包装WebApi调用。所以我创建了以下通用方法,

public async Task<T> GetApi<T>(T model, string uri) where T : class
{
        using (HttpClient httpClient = new HttpClient())
        {
            httpClient.BaseAddress = new Uri(baseAPIURL);
            httpClient.DefaultRequestHeaders.Accept.Clear();
            httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            var response =  httpClient.GetAsync(uri).Result;

            if (response.IsSuccessStatusCode)
            {
                return response.Content.ReadAsAsync<T>().Result;
            }
        }

        return default(T);

    }

这里,在哪里使用await关键字使我的方法异步?

1 个答案:

答案 0 :(得分:1)

应使用

await代替Task<T>.ResultTask.WaitTask.ContinueWith

using (HttpClient httpClient = new HttpClient())
{
  httpClient.BaseAddress = new Uri(baseAPIURL);
  httpClient.DefaultRequestHeaders.Accept.Clear();
  httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
  var response = await httpClient.GetAsync(uri);

  if (response.IsSuccessStatusCode)
  {
    return await response.Content.ReadAsAsync<T>();
  }
}

return default(T);
相关问题