Bem, a atualização à qual Haack está se referindo foi feita por mim :) Deixe-me mostrar como usá-la, pois na verdade é muito simples. Anteriormente, você tinha métodos como ExecuteAsyncGetesse retornariam um tipo personalizado RestSharp chamado RestRequestAsyncHandle. Este tipo não pode ser esperado como tipos de async/awaittrabalho Taske Task<T>retorno. Minha solicitação pull adicionou sobrecargas aos métodos assíncronos existentes que retornam Task<T>instâncias. Essas Task<T>sobrecargas têm uma string "Tarefa" adicionada a seus nomes, por exemplo, a Task<T>sobrecarga para ExecuteAsyncGeté chamada ExecuteGetTaskAsync<T>. Para cada uma das novas Task<T>sobrecargas, há um método que não exige que um CancellationTokenseja especificado e outro que exige .
Agora vamos a um exemplo real de como usá-lo, que também mostrará como usar 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);
}
Isso usará a ExecuteTaskAsyncsobrecarga que retorna uma Task<IRestResponse>instância. Como ele retorna a Task, você pode usar a awaitpalavra-chave neste método e obter o Task<T>tipo retornado de (neste caso IRestResponse).
Você pode encontrar o código aqui: http://dotnetfiddle.net/tDtKbL