- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在努力寻找一些将 RestSharp 与 async
和 await
结合使用的异步 C# 代码的现代示例。我知道有 been a recent update by Haack但我不知道如何使用新方法。
此外,我如何提供取消 token 以便取消操作(例如,如果有人厌倦了等待并按下应用 UI 中的“取消”按钮)。
最佳答案
好吧,Haack 所指的更新是由我完成的:) 所以让我向您展示如何使用它,因为它实际上非常简单。以前你有类似 ExecuteAsyncGet
的方法这将返回一个名为 RestRequestAsyncHandle
的 RestSharp 自定义类型.无法等待此类型为 async/await
在 Task
上工作和 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/
我是一名优秀的程序员,十分优秀!