Nah, pembaruan yang dimaksud Haack telah dibuat oleh saya :) Jadi izinkan saya menunjukkan cara menggunakannya, karena sebenarnya sangat sederhana. Sebelumnya Anda memiliki metode seperti ExecuteAsyncGet
itu yang akan mengembalikan tipe kustom RestSharp bernama RestRequestAsyncHandle
. Jenis ini tidak bisa ditunggu sebagai jenis async/await
karya Task
dan 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 ExecuteAsyncGet
disebut ExecuteGetTaskAsync<T>
. Untuk setiap Task<T>
kelebihan beban baru, ada satu metode yang tidak memerlukan a CancellationToken
untuk 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 ExecuteTaskAsync
kelebihan beban yang mengembalikan sebuah Task<IRestResponse>
instance. Karena mengembalikan a Task
, Anda dapat menggunakan await
kata 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