Do we always need to use async keyword?

.net, async-await, asynchronous

Solution

What is the difference between these two methods and why should i use the first one usually?

The first one has a compiler-generated state machine and creates additional garbage on the heap. Therefore the second one is preferred.

For more information, watch the classic Zen of Async video.

Problem

Let's consider this code: ``` public async Task TheBestMethodEver1() { // code skipped await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { // code skipped }); ``` } ``` public Task TheBestMethodEver2() { // code skipped return Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { // code skipped }).AsTask(); } ``` Any of these methods can be called like: ``` await TheBestMethodEverX(); ``` What is the difference between these two methods and why should I use the first one usually?

Original source