c# - 当调用函数中的下一行是返回语句时,使用 SaveChangesAsync() 是否有好处?

标签 c# asp.net-mvc-4 async-await

我正在查看一个 ASP.NET MVC 应用程序,并且有代码调用 SaveChangesAsync() 以在实体更新时保存对数据库的更改,但调用函数中的下一个语句是返回语句。根据我的理解,调用 SaveChangesAsync() 会将控件返回给调用函数,所以我很困惑为什么在函数结束时需要使用 SaveChangesAsync() 。例如,在下面的代码中,调用函数中的下一个语句是 return RedirectToAction(...);

// Calling function
[HttpPost]
public async Task<ActionResult> Edit(Person p)
{
  await PersonRepository.UpdatePerson(p);
  return RedirectToAction(...);
}

// PersonRepository.UpdatePerson
public async Task<bool> UpdatePerson(Person p)
{
  ...
  await db.SaveChangesAsync();
  return true;
}

最佳答案

是的,如果没有逻辑继续等待的操作,使用 await 是有意义的。

等待的主要优点之一是它将执行控制返回给调用环境。这允许在等待的操作完成时执行其他计划任务。

在您的情况下,这意味着控制权返回到 Web 主机,这又可以允许服务器上的其他任务计时一些处理时间

关于c# - 当调用函数中的下一行是返回语句时,使用 SaveChangesAsync() 是否有好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34337450/

相关文章:

基于登录路由的 C# MVC4 登录操作

javascript - 带有获取实例的 console.log() 在异步函数中停止执行

c# - 如何安全地取消任务?

c# - 如何禁用 Controller ASP.NET MVC 5 上的默认路由

c# - 通用类协方差

c# - asp.net mvc 在 ActionResult 中多次循环后什么都不做

Typescript 柯里化(Currying)和异步函数

c# - ffmpeg c#asp视频转换

javascript - 从下拉列表中选择值后 MVC 重新加载页面

c# - ASP.Net MVC4 自定义路由