想象一下下面的情况。存在一个UI,并且必须在不阻塞主线程的情况下调用%s长时间运行的操作。长时间运行的操作调用intself的一些其他方法,这些方法不与UI线程交互。
在大多数情况下,从方法B和C调用的方法具有异步对应物的同步替代。问题是:可以安全地使用它们而不是异步对应物吗?让我们用DbContext.DbSet.Add代替AddAsync
// UI
public async Task UiMethodAsync()
{
var result = await MethodAAsync();
}
// some component
public async Task<bool
当您知道您已经在一个单独的线程(即C#核心端点)中时,我正在尝试理解使用异步/等待ASP.NET代码的性能好处。
让我们假设我们在一个C#核心API中有以下ASP.NET代码:
//This is the ASP.NET Core endpoint
public async Task<ActionResult> Get()
{
await CallAllAsync();
}
public async Task<ActionResult> CallAllAsync()
{
await CallBAsync();
await CallC
这是我们的async方法,它在任务中执行很长时间。
public async Task<int> LongRunningMethod(T p1, T p2, T p3);
我团队中的一些开发人员使用
Task t = Task.Factory.StartNew(LongRunningMethod(p1,p2,p3));
t.Wait(); //This will suspend main thread and wait for 't' to finish.
当一些人使用
await LongRunningMethod(p1,p2,p3);
// Here too,