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 ExecuteAsyncGet
solche Methoden , die einen benutzerdefinierten RestSharp-Typ mit dem Namen zurückgaben RestRequestAsyncHandle
. Dieser Typ kann nicht erwartet werden , wie async/await
auf Werke Task
und 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 ExecuteAsyncGet
aufgerufen 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 await
Schlü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