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ư ExecuteAsyncGet
vậ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/await
các loại hoạt động Task
và 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 CancellationToken
chỉ đị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 ExecuteTaskAsync
quá tải trả về một Task<IRestResponse>
thể hiện. Khi nó trả về a Task
, bạn có thể sử dụng await
từ 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