Nun, das Update, auf das sich Haack bezieht, wurde von mir gemacht :) Lassen Sie mich Ihnen zeigen, wie man es benutzt, da es eigentlich sehr einfach ist. Zuvor hatten Sie ExecuteAsyncGetsolche Methoden , die einen benutzerdefinierten RestSharp-Typ mit dem Namen zurückgaben RestRequestAsyncHandle. Dieser Typ kann nicht erwartet werden , wie async/awaitauf Werke Taskund Task<T>Rückgabetypen. Meine Pull-Anfrage fügte den vorhandenen asynchronen Methoden, die Task<T>Instanzen zurückgeben, Überladungen hinzu . Diesen Task<T>Überladungen wird eine zusätzliche "Task" -String hinzugefügt, beispielsweise wird die Task<T>Überladung für ExecuteAsyncGetaufgerufen ExecuteGetTaskAsync<T>. Für jede der neuen Task<T>Überladungen gibt es eine Methode, für die keine erforderlich istCancellationToken Angabe , und eine, die dies tut.
Nun zu einem tatsächlichen Beispiel für die Verwendung, das auch zeigt, wie ein 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);
}
Dies verwendet die ExecuteTaskAsyncÜberladung, die eine Task<IRestResponse>Instanz zurückgibt . Wenn a zurückgegeben wird Task, können Sie das awaitSchlüsselwort für diese Methode verwenden und den Task<T>zurückgegebenen Typ des Typs zurückgeben (in diesem Fall IRestResponse).
Den Code finden Sie hier: http://dotnetfiddle.net/tDtKbL