Що ж, оновлення Haack має на увазі зроблене мною :) Тож дозвольте мені показати вам, як ним користуватися, оскільки це насправді дуже просто. Раніше у вас були такі способи, ExecuteAsyncGetякі б повернули користувальницький тип RestSharp з назвою RestRequestAsyncHandle. Цього типу не можна було очікувати, оскільки він async/awaitпрацює Taskта Task<T>повертається. Мій запит на додавання додав перевантаження існуючим методам асинхронізації, які повертають Task<T>екземпляри. Ці Task<T>перевантаження мають доданий рядок "Завдання" до їх імен, наприклад, викликається Task<T>перевантаження для . Для кожної з нових перевантажень існує один метод, який не потребує вказівки, і є такий, який є.ExecuteAsyncGetExecuteGetTaskAsync<T>Task<T>CancellationToken
Отже, тепер до фактичного прикладу, як його використовувати, який також покаже, як користуватися 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);
}
Це використовуватиме ExecuteTaskAsyncперевантаження, яка повертає Task<IRestResponse>екземпляр. Коли він повертає a Task, ви можете використовувати awaitключове слово у цьому методі та отримати Task<T>повернутий тип повернутого типу (у даному випадку IRestResponse).
Ви можете знайти код тут: http://dotnetfiddle.net/tDtKbL