在异步任务概念中等待获取错误

时间:2015-09-18 07:18:55

标签: c# async-await

伙计们,我在await response.Content.ReadAsAsync<ManifestStatusEntity>();

收到错误

因为无法等待

我已经看过教程并实现了代码但不确定错误。

public async Task  dataRowSpy_RowChanged(object sender, DataRowChangedEventArgs e)
{
    //TODO: Process the new request
    using (var client = new HttpClient())
    {
        try
        {
            client.BaseAddress = new Uri("http://localhost:9667/");
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml"));
            HttpResponseMessage response = await client.GetAsync("api/psms/getmanifeststatus").Result;
            if (response.IsSuccessStatusCode)
            {
                ManifestStatusEntity manifestStatusEntity =  await response.Content.ReadAsAsync<ManifestStatusEntity>();
                newManifestVersion = Convert.ToInt32(manifestStatusEntity.Version);
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex);
        }
    }
}

此Web API获取Int值。 还有什么我需要实现的吗?

1 个答案:

答案 0 :(得分:3)

代码中的实际问题更进一步,在这里:

HttpResponseMessage response = await client.GetAsync("api/psms/getmanifeststatus").Result;

Await关键字将异步返回任务的结果。 .Result属性将同步返回任务的结果。问题是,您正在调用.Result,它同步返回HttpResponseMessage,然后在HttpResponseMessage对象上调用等待而不是任务。

HttpResponseMessage response = await client.GetAsync("api/psms/getmanifeststatus");

试试这个。