Bueno, la actualización a la que se refiere Haack la hice yo :) Así que déjame mostrarte cómo usarla, ya que en realidad es muy simple. Anteriormente, tenía métodos como ExecuteAsyncGetese que devolverían un tipo personalizado RestSharp llamado RestRequestAsyncHandle. Este tipo no se pudo esperar ya que async/awaitfunciona Tasky Task<T>devuelve tipos. Mi solicitud de extracción agregó sobrecargas a los métodos asíncronos existentes que devuelven Task<T>instancias. Estas Task<T>sobrecargas tienen una cadena "Tarea" agregada a sus nombres, por ejemplo, se llama a la Task<T>sobrecarga . Para cada una de las nuevas sobrecargas, hay un método que no requiere que se especifique un y hay uno que sí.ExecuteAsyncGetExecuteGetTaskAsync<T>Task<T>CancellationToken
Así que ahora veamos un ejemplo real sobre cómo usarlo, que también mostrará cómo usar un 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);
}
Esto usará la ExecuteTaskAsyncsobrecarga que devuelve una Task<IRestResponse>instancia. Como devuelve un Task, puede usar la awaitpalabra clave en este método y obtener el Task<T>tipo devuelto (en este caso IRestResponse).
Puede encontrar el código aquí: http://dotnetfiddle.net/tDtKbL