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