Chà, bản cập nhật mà Haack đề cập đến là do tôi thực hiện :) Vì vậy, hãy để tôi chỉ cho bạn cách sử dụng nó, vì nó thực sự rất đơn giản. Trước đây bạn có các phương thức như ExecuteAsyncGetvậy sẽ trả về kiểu tùy chỉnh RestSharp có tên RestRequestAsyncHandle. Loại này không thể được chờ đợi như async/awaitcác loại hoạt động Taskvà Task<T>trả lại. Yêu cầu kéo của tôi đã thêm quá tải vào các phương thức không đồng bộ hiện có trả về các Task<T>phiên bản. Các Task<T>quá tải này có thêm một chuỗi "Tác vụ" được thêm vào tên của chúng, ví dụ: Task<T>quá tải cho ExecuteAsyncGetđược gọi ExecuteGetTaskAsync<T>. Đối với mỗi Task<T>quá tải mới, có một phương thức không yêu cầu phải CancellationTokenchỉ định và có một phương thức thì có.
Vì vậy, bây giờ là một ví dụ thực tế về cách sử dụng nó, cũng sẽ cho thấy cách sử dụng 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);
}
Điều này sẽ sử dụng ExecuteTaskAsyncquá tải trả về một Task<IRestResponse>thể hiện. Khi nó trả về a Task, bạn có thể sử dụng awaittừ khóa trên phương thức này và được trả về kiểu trả về của Task<T>'(trong trường hợp này IRestResponse).
Bạn có thể tìm thấy mã tại đây: http://dotnetfiddle.net/tDtKbL