C# 尝试从异步方法返回字符串时出现线程异常

C# 尝试从异步方法返回字符串时出现线程异常,c#,asynchronous,async-await,C#,Asynchronous,Async Await,我正在开发一个Winforms应用程序,它在计时器控制循环中对各种web服务进行一些基于HTTP的API调用。使用async关键字调用web服务。问题是,我在尝试以字符串形式返回结果时遇到线程异常 private async Task<String> UpdateViaApi(ClientInfoObject clientInfoObject) { HttpResponseMessage response = await myHttpClient.SendAsync(requ

我正在开发一个Winforms应用程序,它在计时器控制循环中对各种web服务进行一些基于HTTP的API调用。使用
async
关键字调用web服务。问题是,我在尝试以字符串形式返回结果时遇到线程异常

private async Task<String> UpdateViaApi(ClientInfoObject clientInfoObject)
{
    HttpResponseMessage response = await myHttpClient.SendAsync(request);
    string result = await response.Content.ReadAsStringAsync();
    return result;
}

clientinfo对象
是一个简单的类,它将数据作为一系列属性包含。我是否正确使用任务?

您需要等待返回的任务:

string result = await UpdateViaApi(clientInfoObject);
另外,请注意,方法名称应以
Async
结尾,以便:


您需要等待返回的任务:

string result = await UpdateViaApi(clientInfoObject);
另外,请注意,方法名称应以
Async
结尾,以便:


这甚至不会编译。UpdateViaApi返回一个
任务
而不是字符串。我明白你的意思。然而,它是编译的,甚至不会编译。UpdateViaApi返回一个
任务
而不是字符串。我明白你的意思。不过,它确实可以编译。感谢您的回复。当我添加关键字
await
时,我得到错误
await运算符只能在异步方法中使用。考虑用“AsiNC”修饰符标记该方法,并将其返回类型改为“任务”。< /代码>,同时阅读您的书。好消息。@webworm现在您是否阅读了错误消息并按照它给您的说明进行了操作?确实是这样。似乎包含
UpdateViaApiAsync(clientinfo对象)
的方法也需要以
wait
运算符作为前缀。感谢您的响应。当我添加关键字
await
时,我得到错误
await运算符只能在异步方法中使用。考虑用“AsiNC”修饰符标记该方法,并将其返回类型改为“任务”。< /代码>,同时阅读您的书。好消息。@webworm现在您是否阅读了错误消息并按照它给您的说明进行了操作?确实是这样。看起来包含
UpdateViaApiAsync(clientinfo对象)
的方法也需要以
wait
运算符作为前缀。
string result = await UpdateViaApiAsync(clientInfoObject);