我无法找到使用GetAsync
或PostAsync
方法的任何示例。我尝试用以下方法实现它:
private static Task<IRestResponse> GetResultAsync(RestClient client, RestRequest request)
{
var taskSource = new TaskCompletionSource<IRestResponse>();
client.GetAsync(request, response =>
{
taskSource.SetResult(response);
});
return taskSource.Task;
}
我收到错误,因为我不知道必须传递什么RestRequestAsyncHandle
参数:
代表&#39;行动&lt; IRestResponse,RestRequestAsyncHandle&gt;&#39;不需要1 参数
有人可以告诉我应该传递给RestRequestAsyncHandle
吗?
答案 0 :(得分:2)
如果你想走基于任务的异步路径,那就一直这样做:
private static Task<IRestResponse> GetResultAsync(RestClient client, RestRequest request)
{
return client.ExecuteGetTaskAsync(request);
}
Kirk很好地解释了你在方法中错过了AsyncHandle的内容,所以我不会在这里重复一遍。
查看github上的代码,他们似乎已经完成了#34;引擎盖&#34;,你尝试了什么。所以我不会重新发明轮子。
答案 1 :(得分:2)
我很难在文档中找到任何具体内容,但看起来您的问题更多的是您希望提供RestRequestAsyncHandle
。相反,看起来你需要在回调中“接”一个。 e.g:
client.GetAsync(request, (response, handle) =>
{
taskSource.SetResult(response);
});
RestRequestAsyncHandle
的{{3}}表示它包含Abort
函数,如果需要,您可以在处理程序中调用该函数。
我无法保证这是否是在RestSharp中使用async的正确方法,但我认为这可以解决您的特定错误。 @ Fildor的回答和评论下面提出了一种更为正确的异步方法。