Haack'ın bahsettiği güncelleme benim tarafımdan yapıldı :) Bu yüzden size nasıl kullanılacağını göstereyim, çünkü aslında çok basit. Daha önce, böyle ExecuteAsyncGetbir RestSharp özel türü döndüren yöntemler vardı RestRequestAsyncHandle. Bu tür, async/awaitçalışma Taskve Task<T>dönüş türleri olarak beklenemezdi . Çekme isteğim, Task<T>örnekleri döndüren mevcut zaman uyumsuz yöntemlere aşırı yükler ekledi . Bu Task<T>aşırı yüklemelerin adlarına eklenen bir "Görev" dizesi vardır, örneğin Task<T>aşırı yükleme ExecuteAsyncGetçağrılır ExecuteGetTaskAsync<T>. Yeni Task<T>aşırı yüklerin her biri için, a'nın CancellationTokenbelirtilmesini gerektirmeyen bir yöntem vardır ve bunu yapan bir tane vardır.
Şimdi, nasıl kullanılacağına dair gerçek bir örneğe geçelim, bu da a'nın nasıl kullanılacağını gösterecek 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);
}
Bu, ExecuteTaskAsyncbir Task<IRestResponse>örnek döndüren aşırı yüklemeyi kullanacaktır . A döndürdüğünde Task, awaitanahtar kelimeyi bu yöntemde kullanabilir ve Task<T>döndürülen türü (bu durumda IRestResponse) döndürebilirsiniz .
Kodu burada bulabilirsiniz: http://dotnetfiddle.net/tDtKbL