我应该如何在WindowsPhone7上使用RestSharp实现ExecuteAsync?我正在尝试使用RestSharpGitHubwiki上的文档实现对我的RESTAPI服务的调用,但具体来说,我在使用ExecuteAsync方法时遇到了问题。目前,我的API类代码如下所示:publicclassHarooApi{conststringBaseUrl="https://domain.here";只读字符串_accountSid;只读字符串_secretKey;publicHarooApi(stringaccountSid,stringsecretKey){_accountSid=accountSid;_secretKey=秘密密钥;}publicTExecute(RestRequestrequest)whereT:new(){varclient=newRestClient();client.BaseUrl=BaseUrl;client.Authenticator=newHttpBasicAuthenticator(_accountSid,_secretKey);要求。AddParameter("AccountSid",_accountSid,ParameterType.UrlSegment);client.ExecuteAsync(请求,(响应)=>{returnresponse.Data;});我知道这与GitHub页面上的内容略有不同,但我在It'susedinWP7中相信该示例适用于C#,使用了ExecuteAsync方法。我的问题是ExecuteAsync命令应该包含什么。我不能使用returnresponse.Data因为我被警告:'System.Action'返回void,return关键字后面不能跟对象表达式解决这个问题或者可能对有用的教程有任何见解?您的代码应如下所示:publicclassHarooApi{conststringBaseUrl="https://domain.here";只读字符串_accountSid;只读字符串_secretKey;publicHarooApi(stringaccountSid,stringsecretKey){_accountSid=accountSid;_secretKey=秘密密钥;}publicvoidExecuteAndGetContent(RestRequestrequest,Actioncallback){varclient=newRestClient();client.BaseUrl=BaseUrl;client.Authenticator=newHttpBasicAuthenticator(_accountSid,_secretKey);request.AddParameter("AccountSid",ParameterType.UrlSegment);client.ExecuteAsync(请求,响应=>{回调(响应.Content);});}publicvoidExecuteAndGetMyClass(RestRequestrequest,Actioncallback){varclient=newRestClient();client.BaseUrl=BaseUrl;Cclient.Authenticator=newHttpBasicAuthenticator(_accountSid,_secretKey);request.AddParameter("AccountSid",_accountSid,ParameterType.UrlSegment);client.ExecuteAsync(请求,(响应)=>{回调(响应.Data);});我添加了两个方法,这样你就可以检查你想要什么(来自响应主体的字符串内容,或者MyClass在这里代表的反序列化类)老问题但是如果你使用的是C#5,你可以通过创建来实现通用执行类任务T您的代码将如下所示:publicTaskExecuteAsync(RestRequestrequest)whereT:new(){varclient=newRestClient();vartaskCompletionSource=newTaskCompletionSource();client.BaseUrl=BaseUrl;client.Authenticator=newHttpBasicAuthenticator(_accountSid,_secretKey);request.AddParameter("AccountSid",_accountSid,ParameterType.UrlSegment);client.ExecuteAsync(请求,(响应)=>taskCompletionSource.SetResult(response.Data));返回taskCompletionSource.Task;}像这样使用它:privateasyncTaskDoWork(){varapi=newHarooApi("MyAcoountId","MySecret");varrequest=newRestRequest();varmyClass=awaitapi.ExecuteAsync(request);//DosomethingwithmyClass}作为Gusten详尽答案的替代(或补充)。您可以使用ExecuteTaskAsync。这样您就不必手动处理TaskCompletionSource。请注意签名中的async关键字。publicasyncTaskExecuteAsync(RestRequestrequest)whereT:new(){varclient=newRestClient();client.BaseUrl=BaseUrl;client.Authenticator=newHttpBasicAuthenticator(_accountSid,_secretKey);request.AddParameter("AccountSid",_account,ParameterType.UrlSegment);IRestResponseresponse=awaitclient.ExecuteTaskAsync(request);返回响应数据;}或者更准确地说是这样的:vartaskCompletionSource=newTaskCompletionSource>();client.ExecuteAsync(request,restResponse=>{if(restResponse.ErrorException!=null){conststringmessage="Errorretrievingresponse.";thrownewApplicationException(message,restResponse.ErrorException);}taskCompletionSource.SetResult(restResponse);});返回等待taskCompletionSource.Task;这是使用RestSharp实现ExecuteAsync的工作吗?全部共享如果对你有用,需要了解更多C#学习教程,希望你多多关注—publicasyncTask>ExecuteAsync(IRestRequestrequest)whereT:class,new(){varclient=newRestClient{BaseUrl=_baseUrl,Authenticator=newHttpBasicAuthenticator(_useraname,_password),Timeout=3000,};vartcs=newTaskCompletionSource();client.ExecuteAsync(request,restResponse=>{if(restResponse.ErrorException!=null){conststringmessage="错误检索响应。";thrownewApplicationException(message,restResponse.ErrorException);}tcs.SetResult(restResponse.Data);});返回等待tcs.Task作为IRestResponse;}侵权请点击维权联系管理员删除如需转载请注明出处: