c# - 如何将 RestSharp 与异步/等待一起使用

标签 c# .net asynchronous async-await restsharp

我正在努力寻找一些将 RestSharp 与 asyncawait 结合使用的异步 C# 代码的现代示例。我知道有 been a recent update by Haack但我不知道如何使用新方法。

此外,我如何提供取消 token 以便取消操作(例如,如果有人厌倦了等待并按下应用 UI 中的“取消”按钮)。

最佳答案

好吧,Haack 所指的更新是由我完成的:) 所以让我向您展示如何使用它,因为它实际上非常简单。以前你有类似 ExecuteAsyncGet 的方法这将返回一个名为 RestRequestAsyncHandle 的 RestSharp 自定义类型.无法等待此类型为 async/awaitTask 上工作和 Task<T>返回类型。我的拉取请求向返回 Task<T> 的现有异步方法添加了重载实例。这些Task<T>重载在其名称中添加了一个“任务”字符串,例如 Task<T> ExecuteAsyncGet 过载叫做ExecuteGetTaskAsync<T> .对于每个新的 Task<T>重载有一种方法不需要 CancellationToken有待指定,并且有一个可以做到。

那么现在来看一个关于如何使用它的实际示例,它还将展示如何使用 CancellationToken。 :

private static async void Main()
{
    var client = new RestClient();
    var request = new RestRequest("http://www.google.com");
    var cancellationTokenSource = new CancellationTokenSource();

    var restResponse = 
        await client.ExecuteTaskAsync(request, cancellationTokenSource.Token);

    // Will output the HTML contents of the requested page
    Console.WriteLine(restResponse.Content); 
}

这将使用 ExecuteTaskAsync返回 Task<IRestResponse> 的重载实例。因为它返回 Task , 您可以使用 await此方法上的关键字并返回 Task<T>的返回类型(在本例中为 IRestResponse )。

您可以在此处找到代码:http://dotnetfiddle.net/tDtKbL

关于c# - 如何将 RestSharp 与异步/等待一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21779206/

相关文章:

c# - 当我运行我的网站时, GridView 没有出现

c# - 枚举列表 <Object> (Id, Name)

c# - 不带日期时间函数(如 ToShortDateString())的 DateTime 等类型的隐式运算符

javascript - 等待关键字在 Redux 操作中不起作用

c# - 如何检测套接字断开连接?

c# - 赋予它特定文化的日期时间格式不会改变日期的打印方式

c# - 通过.net使用java web服务-数据不一致

c# - 如何使用代码设置 Windows 窗体窗体的 StartPosition?

c# - 调用异步 ActionResults 时,AllowVoidAsyncOperations 何时设置?

node.js - Promise.all() 不等待异步进程