Ответ 1
Ну, обновление, на которое ссылается Haack, было сделано мной :) Итак, позвольте мне показать вам, как его использовать, поскольку на самом деле это очень просто. Ранее у вас были такие методы, как ExecuteAsyncGet
, которые возвращали бы пользовательский тип RestSharp с именем RestRequestAsyncHandle
. Этот тип нельзя ожидать, так как async/await
работает с типами возвращаемых данных Task
и Task<T>
. Мой запрос на добавление добавил перегрузки к существующим асинхронным методам, которые возвращают экземпляры Task<T>
. Эти перегрузки Task<T>
имеют добавленную строку "Task", добавленную к их именам, например, перегрузка Task<T>
для ExecuteAsyncGet
называется ExecuteGetTaskAsync<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>
. Поскольку он возвращает Task
, вы можете использовать ключевое слово await
в этом методе и получить возвращенный тип Task<T>
(в данном случае IRestResponse
).
Вы можете найти код здесь: http://dotnetfiddle.net/tDtKbL