Task.FromResult代替Task.Run
对于一些预先知道的结果或者只是一个简单的计算函数,使用Task,FromResult要比Task.Run性能要好,因为Task.FromResult只是创建了一个包装已计算任务的任务...,导致进程永久堵塞,
使用Task.Result和Task.Wait()会在winform和ASP.NET中会死锁,因为它们SynchronizationContext具有对象,两个线程在SynchronizationContext...争夺导致死锁,而ASP.NET Core则不会产生死锁,因为ASP.NET Core本质是一个控制台应用程序,并没有上下文
下面的例子,虽然都不会产生死锁,但是依然具有很多问题
async Task<string...;
Debug.WriteLine(DoOperationBlocking());
}
public string DoOperationBlocking2()
{
// 此方法也是会导致上下文问题...代码更容易修改(例如:增加一个using)
异步的方法诊断起来更加容易(例如:调试,挂起)
抛出的异常将自动包装在返回的任务之中,而不是抛出实际异常
下面这个错误的例子是将Task直接返回给了调用者