Что ж, обновление, о котором говорит Хаак, было сделано мной :) Итак, позвольте мне показать вам, как его использовать, так как на самом деле это очень просто. Раньше у вас были такие методы, как ExecuteAsyncGet
, которые возвращали пользовательский тип RestSharp с именем RestRequestAsyncHandle
. Этот тип нельзя было ожидать, так как async/await
работает с типами возврата Task
и Task<T>
. Мой запрос на включение добавил перегрузки к существующим асинхронным методам, которые возвращают Task<T>
экземпляров. Эти перегрузки Task<T>
имеют добавленную строку «Задача», добавленную к их именам, например, перегрузка 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.
person
Erik Schierboom
schedule
14.02.2014