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 ExecuteAsyncGet
ese que devolverían un tipo personalizado RestSharp llamado RestRequestAsyncHandle
. Este tipo no se pudo esperar ya que async/await
funciona Task
y 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í.ExecuteAsyncGet
ExecuteGetTaskAsync<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 ExecuteTaskAsync
sobrecarga que devuelve una Task<IRestResponse>
instancia. Como devuelve un Task
, puede usar la await
palabra 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