如何在C#中异步调用Web方法?

时间:2019-01-15 10:06:16

标签: c# html asp.net

如何使用异步在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分配给隐式类型化局部变量

2 个答案:

答案 0 :(得分:4)

您需要使方法异步。更改此:

public void SaveSuggestedItems(string emailbody, string OrderHeaderID)

对此:

public async Task SaveSuggestedItems(string emailbody, string OrderHeaderID)

现在您可以等待它。

注意:您不必(也不能)实际return明确地执行任务。编译器会为您生成一个。

另外,请考虑从changing the nameSaveSuggestedItemsAsync()

最后,确保有actually a need使它异步。

答案 1 :(得分:2)

只需替换:

var saveSuggestedItem = OHDService.SaveSuggestedItems(eBody.Text, hfdOrderRecordID.Value);

拨打标准电话:

OHDService.SaveSuggestedItems(eBody.Text, hfdOrderRecordID.Value);

出现问题是因为您尝试将void分配给某个变量,而您的方法未返回任何类型。与异步调用无关。