Collectives™ on Stack Overflow
Find centralized, trusted content and collaborate around the technologies you use most.
Learn more about Collectives
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
Learn more about Teams
I'm struggling to find a modern example of some asynchronous C# code that uses RestSharp with
async
and
await
. I know there's
been a recent update by Haack
but I don't know how to use the new methods.
Also, how can I provide a cancellation token so that the operation can be canceled (say, if a person is sick of waiting and presses the Cancel button in the app's UI).
Well, the update Haack is referring to has been made by me :) So let me show you how to use it, as it is actually very simple. Previously you had methods like
ExecuteAsyncGet
that would return a RestSharp custom type named
RestRequestAsyncHandle
. This type could not be awaited as
async/await
works on
Task
and
Task<T>
return types. My pull-request added overloads to the existing async methods that return
Task<T>
instances. These
Task<T>
overloads have an added "Task" string added to their names, for example the
Task<T>
overload for
ExecuteAsyncGet
is called
ExecuteGetTaskAsync<T>
. For each of the new
Task<T>
overloads there is one method that does not require a
CancellationToken
to be specified and there is one that does.
So now on to an actual example on how to use it, which will also show how to use a
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);
This will use the ExecuteTaskAsync
overload that returns a Task<IRestResponse>
instance. As it returns a Task
, you can use the await
keyword on this method and get returned the Task<T>
's returned type (in this case IRestResponse
).
You can find the code here: http://dotnetfiddle.net/tDtKbL
–
–
–
In my case, I had to call Task.Wait() for it to work properly. However, I used the version which does not take CancellationTokenSource as parameter.
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
–
–
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.