Why use async and return await, when you can return Task directly?

There is one sneaky case when return in normal method and return await in async method behave differently: when combined with using (or, more generally, any return await in a try block). Consider these two versions of a method: Task<SomeResult> DoSomethingAsync() { using (var foo = new Foo()) { return foo.DoAnotherThingAsync(); } } async Task<SomeResult> … Read more

Awaiting multiple Tasks with different results

After you use WhenAll, you can pull the results out individually with await: var catTask = FeedCat(); var houseTask = SellHouse(); var carTask = BuyCar(); await Task.WhenAll(catTask, houseTask, carTask); var cat = await catTask; var house = await houseTask; var car = await carTask; You can also use Task.Result (since you know by this point … Read more

How to safely call an async method in C# without await

If you want to get the exception “asynchronously”, you could do: MyAsyncMethod(). ContinueWith(t => Console.WriteLine(t.Exception), TaskContinuationOptions.OnlyOnFaulted); This will allow you to deal with an exception on a thread other than the “main” thread. This means you don’t have to “wait” for the call to MyAsyncMethod() from the thread that calls MyAsyncMethod; but, still allows you … Read more

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)