如何在 RestSharp 中使用 GetAsync 或 PostAsync
How to use GetAsync or PostAsync in RestSharp
我找不到任何使用 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
参数传递:
Delegate 'Action < IRestResponse, RestRequestAsyncHandle>' does not take 1
arguments
有人可以告诉我什么应该作为 RestRequestAsyncHandle
传递吗?
如果你想走基于任务的异步路径,那就一路走吧:
private static Task<IRestResponse> GetResultAsync(RestClient client, RestRequest request)
{
return client.ExecuteGetAsync(request);
}
Kirk 很好地解释了您在方法中遗漏的有关 AsyncHandle 的内容,因此我不会在这里重复。
查看 github 上的代码,他们似乎实际上已经在“幕后”完成了您尝试过的事情。所以我不会重新发明轮子。
我正在努力寻找文档中的任何具体内容,但看起来您的问题更多的是您希望必须提供 RestRequestAsyncHandle
。相反,您似乎需要 "take" 回调中的一个。例如:
client.GetAsync(request, (response, handle) =>
{
taskSource.SetResult(response);
});
RestRequestAsyncHandle
的 code 表明它包含一个 Abort
函数,如果需要,您可以从处理程序中调用该函数。
我不能保证这是否是在 RestSharp 中使用异步的正确方法,但我认为这解决了您的特定错误。 @Fildor 的回答和下面的评论建议对整个异步内容采取更正确的方法。
我找不到任何使用 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
参数传递:
Delegate 'Action < IRestResponse, RestRequestAsyncHandle>' does not take 1 arguments
有人可以告诉我什么应该作为 RestRequestAsyncHandle
传递吗?
如果你想走基于任务的异步路径,那就一路走吧:
private static Task<IRestResponse> GetResultAsync(RestClient client, RestRequest request)
{
return client.ExecuteGetAsync(request);
}
Kirk 很好地解释了您在方法中遗漏的有关 AsyncHandle 的内容,因此我不会在这里重复。
查看 github 上的代码,他们似乎实际上已经在“幕后”完成了您尝试过的事情。所以我不会重新发明轮子。
我正在努力寻找文档中的任何具体内容,但看起来您的问题更多的是您希望必须提供 RestRequestAsyncHandle
。相反,您似乎需要 "take" 回调中的一个。例如:
client.GetAsync(request, (response, handle) =>
{
taskSource.SetResult(response);
});
RestRequestAsyncHandle
的 code 表明它包含一个 Abort
函数,如果需要,您可以从处理程序中调用该函数。
我不能保证这是否是在 RestSharp 中使用异步的正确方法,但我认为这解决了您的特定错误。 @Fildor 的回答和下面的评论建议对整个异步内容采取更正确的方法。