Nah, pembaruan yang dimaksud Haack telah dibuat oleh saya :) Jadi izinkan saya menunjukkan cara menggunakannya, karena sebenarnya sangat sederhana. Sebelumnya Anda memiliki metode seperti ExecuteAsyncGetitu yang akan mengembalikan tipe kustom RestSharp bernama RestRequestAsyncHandle. Jenis ini tidak bisa ditunggu sebagai jenis async/awaitkarya Taskdan Task<T>jenis pengembalian. Permintaan tarik saya menambahkan beban berlebih ke metode asinkron yang ada yang mengembalikan Task<T>instance. Ini Task<T>overloads memiliki menambahkan "Task" string ditambahkan ke nama mereka, misalnya Task<T>kelebihan untuk ExecuteAsyncGetdisebut ExecuteGetTaskAsync<T>. Untuk setiap Task<T>kelebihan beban baru, ada satu metode yang tidak memerlukan a CancellationTokenuntuk ditentukan dan ada satu metode yang memerlukannya .
Jadi sekarang ke contoh aktual tentang cara menggunakannya, yang juga akan menunjukkan cara menggunakan 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);
}
Ini akan menggunakan ExecuteTaskAsynckelebihan beban yang mengembalikan sebuah Task<IRestResponse>instance. Karena mengembalikan a Task, Anda dapat menggunakan awaitkata kunci pada metode ini dan mendapatkan Task<T>kembali jenis yang dikembalikan (dalam kasus ini IRestResponse).
Anda dapat menemukan kodenya di sini: http://dotnetfiddle.net/tDtKbL