,而Task.Run会将一个工作项在线程池进行排队,计算,返回.并且使用Task.FromResult在具有SynchronizationContext 程序中(例如WinForm)调用Result或wait...争夺导致死锁,而ASP.NET Core则不会产生死锁,因为ASP.NET Core本质是一个控制台应用程序,并没有上下文
下面的例子,虽然都不会产生死锁,但是依然具有很多问题
async Task<string...write/flush
await streamWriter.FlushAsync();
}
}
11.建议使用 async/await而不是直接返回Task
使用async...代替直接返回Task具有以上好处
异步和同步的异常都被始终被规范为了异步
代码更容易修改(例如:增加一个using)
异步的方法诊断起来更加容易(例如:调试,挂起)
抛出的异常将自动包装在返回的任务之中,而不是抛出实际异常..._cache.GetOrAdd(id, (key) => db.People.FindAsync(key).Result);
return Ok(person);
}
}
可以改成缓存线程本身,而不是结果