我正在努力寻找一个使用RestSharp async
和await
的异步C#代码的现代示例.我知道有been a recent update by Haack种,但我不知道如何使用新方法.
此外,我如何提供取消令牌,以便取消操作(例如,如果一个人厌倦了等待并按下应用程序UI中的取消按钮).
我正在努力寻找一个使用RestSharp async
和await
的异步C#代码的现代示例.我知道有been a recent update by Haack种,但我不知道如何使用新方法.
此外,我如何提供取消令牌,以便取消操作(例如,如果一个人厌倦了等待并按下应用程序UI中的取消按钮).
嗯,Haack提到的更新是由我完成的:)所以让我向您展示如何使用它,因为它实际上非常简单.以前,您有像ExecuteAsyncGet
这样的方法,它们将返回名为RestRequestAsyncHandle
的RestSharp自定义类型.无法等待此类型,因为async/await
处理Task
和Task<T>
返回类型.我的Pull-Request向返回Task<T>
个实例的现有异步方法添加了重载.这Task<T>
个重载的名称中添加了一个"Task"字符串,例如,ExecuteAsyncGet
的Task<T>
重载称为ExecuteGetTaskAsync<T>
.对于每个新的Task<T>
重载,都有一个不需要指定CancellationToken
的方法,也有一个需要指定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);
}
这将使用返回Task<IRestResponse>
实例的ExecuteTaskAsync
重载.当它返回Task
时,您可以在此方法上使用await
关键字,并返回Task<T>
的返回类型(在本例中为IRestResponse
).
你可以在这里找到代码:http://dotnetfiddle.net/tDtKbL