windowsphone restresponse restrequest example consume c# .net asynchronous async-await restsharp

c# - restresponse - restsharp github



Cómo usar RestSharp con async/await (2)

Bueno, la actualización a la que se refiere Haack ha sido hecha por mí :) Así que déjame mostrarte cómo usarla, ya que en realidad es muy simple. Anteriormente tenía métodos como ExecuteAsyncGet que devolvería un tipo personalizado RestRequestAsyncHandle llamado RestRequestAsyncHandle . No se pudo esperar este tipo porque async/await funciona en los tipos de devolución Task y Task<T> . Mi solicitud de extracción agregó sobrecargas a los métodos asíncronos existentes que devuelven instancias de Task<T> . Estas sobrecargas de Task<T> tienen agregada una cadena de "Tarea" a sus nombres, por ejemplo, la sobrecarga de Task<T> para ExecuteAsyncGet se llama ExecuteGetTaskAsync<T> . Para cada una de las nuevas sobrecargas de Task<T> hay un método que no requiere que se especifique un CancelToken y hay uno que sí lo hace.

Entonces ahora vamos a un ejemplo real sobre cómo usarlo, que también mostrará cómo utilizar 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); Console.WriteLine(restResponse.Content); // Will output the HTML contents of the requested page }

Esto utilizará la sobrecarga ExecuteTaskAsync que devuelve una instancia de Task<IRestResponse> . A medida que devuelve una Task , puede usar la palabra clave await en este método y obtener el tipo devuelto de la Task<T> (en este caso, IRestResponse ).

Puede encontrar el código aquí: http://dotnetfiddle.net/tDtKbL

Estoy luchando por encontrar un ejemplo moderno de algún código asíncrono C # que use RestSharp con async y await . Sé que ha habido una actualización reciente de Haack, pero no sé cómo usar los nuevos métodos.

Además, ¿cómo puedo proporcionar un token de cancelación para que la operación se cancele (por ejemplo, si una persona está harta de esperar y presiona el botón Cancelar en la interfaz de usuario de la aplicación).


En mi caso, tuve que llamar a Task.Wait () para que funcione correctamente. Sin embargo, utilicé la versión que no toma CancellationTokenSource como parámetro.

private static async void Main() { var client = new RestClient(); var request = new RestRequest("http://www.google.com"); Task<IRestResponse> t = client.ExecuteTaskAsync(request); t.Wait(); var restResponse = await t; Console.WriteLine(restResponse.Content); // Will output the HTML contents of the requested page }