如何使用异步在c#中调用Web方法。我正在像下面这样使用
public void SaveSuggestedItems(string emailbody, string OrderHeaderID)
{
try{
...
}
catch{
...
}
}
在c#Im中使用
public async Task<string> saveSuggestedItem()
{
OHDWebService OHDService = new OHDWebService();
var saveSuggestedItem = OHDService.SaveSuggestedItems(eBody.Text, hfdOrderRecordID.Value);
var suggestedItems = await saveSuggestedItem;
return suggestedItems;
}
但显示错误,例如无法将void分配给隐式类型化局部变量
答案 0 :(得分:4)
您需要使方法异步。更改此:
public void SaveSuggestedItems(string emailbody, string OrderHeaderID)
对此:
public async Task SaveSuggestedItems(string emailbody, string OrderHeaderID)
现在您可以等待它。
注意:您不必(也不能)实际return
明确地执行任务。编译器会为您生成一个。
另外,请考虑从changing the name到SaveSuggestedItemsAsync()
。
最后,确保有actually a need使它异步。
答案 1 :(得分:2)
只需替换:
var saveSuggestedItem = OHDService.SaveSuggestedItems(eBody.Text, hfdOrderRecordID.Value);
拨打标准电话:
OHDService.SaveSuggestedItems(eBody.Text, hfdOrderRecordID.Value);
出现问题是因为您尝试将void
分配给某个变量,而您的方法未返回任何类型。与异步调用无关。