async, await, and Task (part 3)
Use
The
The Task class represents an asynchronous operation and Task<TResult> generic class represents an operation that can return a value. In the above example, we used
The following demonstrates the
In the above example, in the static
An
Use
async
along with await
and Task
if the async
method returns a value back to the calling code. We used only the async
keyword in the above program to demonstrate the simple asynchronous void method.The
await
keyword waits for the async
method until it returns a value. So the main application thread stops there until it receives a return value.The Task class represents an asynchronous operation and Task<TResult> generic class represents an operation that can return a value. In the above example, we used
await Task.Delay(4000)
that started async
operation that sleeps for 4 seconds and await holds a thread until 4 seconds.The following demonstrates the
async
method that returns a value.In the above example, in the static
async Task<int> LongProcess()
method, Task<int>
is used to indicate the return value type int. int val = await result;
will stop the main thread there until it gets the return value populated in the result. Once get the value in the result
variable, it then automatically assigns an integer to val
.An
async
method should return void
, Task
, or Task<TResult>
, where TResult
is the return type of the async
method. Returning void
is normally used for event handlers. The async
keyword allows us to use the await keyword within the method so that we can wait for the asynchronous method to complete for other methods which are dependent on the return value.