C# 从webservice调用异步方法

C# 从webservice调用异步方法,c#,web-services,asynchronous,async-await,C#,Web Services,Asynchronous,Async Await,我对使用web服务还不熟悉,我正在尝试实现一种方法,但遇到了麻烦。这是我试图从中获得响应的方法: (awaitable) Task<getIbuttonDataResponse> SpecSrvClient.getIbuttonDataAsync(GetIbuttonDataInput getIbuttonDataInput) Usage: getIbuttonDataResponse x = await getIbuttonDataAsync(...); 编辑: 对不起,我没有

我对使用web服务还不熟悉,我正在尝试实现一种方法,但遇到了麻烦。这是我试图从中获得响应的方法:

(awaitable) Task<getIbuttonDataResponse> SpecSrvClient.getIbuttonDataAsync(GetIbuttonDataInput getIbuttonDataInput)

Usage:
getIbuttonDataResponse x = await getIbuttonDataAsync(...);
编辑:

对不起,我没有意识到我还不能发布图片,所以把我搞砸了

我的问题是,当我试图从Web服务获取响应时,如何传递IButtoniField字符串?这是获得响应所需的值

编辑2:

好的,这就是我到目前为止写的:

 static class Program
        {
        //...
        static void Main()
           {
            //...
            getIbuttonDataResponse x = new getIbuttonDataResponse();
            Response(serial, x);
            //...
            }
    static async void Response(string[] serial, getIbuttonDataResponse x)
          {
                iButtonDB_Service.SpecSrvClient testrequest = new SpecSrvClient();
                GetIbuttonDataInput input = new GetIbuttonDataInput { ibuttonId = serial[0], testerName = "me" };
                x = await testrequest.getIbuttonDataAsync(input);
           }
    }

我只得到一个null返回,但这可能是因为它试图访问的数据库值尚未创建。

这部分内容不会因为调用了async方法而更改。您仍然需要创建输入对象的实例,填充它,然后将其传递给服务调用:

GetIbuttonDataInput input = new GetIbuttonDataInput {ibuttonId ="x", testerName ="me"};
getIbuttonDataResponse x = await getIbuttonDataAsync(input);

您没有附加图像。请加上。我将为你添加一个链接。你将得到一个空返回,因为你没有返回任何内容。您正在将
getibutondataresponse
传递到
Response
方法中,而不是从那里返回它。尝试
static async Task Response(string[]serial){…return wait testrequest.getibuttonadaasync(input);}
Ok,谢谢。这很有道理,我感谢你的帮助!
GetIbuttonDataInput input = new GetIbuttonDataInput {ibuttonId ="x", testerName ="me"};
getIbuttonDataResponse x = await getIbuttonDataAsync(input);