如何在 RestSharp 中使用 GetAsync 或 PostAsync

How to use GetAsync or PostAsync in RestSharp

我找不到任何使用 GetAsyncPostAsync 方法的示例。我尝试通过以下方式实现它:

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);
});

RestRequestAsyncHandlecode 表明它包含一个 Abort 函数,如果需要,您可以从处理程序中调用该函数。

我不能保证这是否是在 RestSharp 中使用异步的正确方法,但我认为这解决了您的特定错误。 @Fildor 的回答和下面的评论建议对整个异步内容采取更正确的方法。