好的,我在这个网站上已经有很多主题了,这整个异步的东西仍然让我感到困惑,所以我要保持简单。
我在控制器上有一个ActionMethod。
public async Task<ActionResult> Index()
{
try
{
throw new Exception("test");
}
catch (Exception ex)
{
new MD_Log().LogError();
}
return View();
}
我的ErrorLog函数本身就是异步
// adds a new error log
public async Task LogError()
{
Thread.Sleep(10000);
// add a record to the error table
using (DB db = new DB())
{
// SomeCode
await db.SaveChangesAsync();
}
}
我在控制器上抛出一个新的异常,调用 LogError()方法,暂停执行日志功能10秒钟。
我不想等待LogError()函数完成,因为我的用户不需要等待,所以我省略了await关键字 我的控制器操作中新的 MD_Log()。LogError()函数。
现在,如果我在返回View(); 上添加一个断点,那么在等待db.SaveChangesAsync()被击中之前,该断点不应该先被击中?
我没有添加await关键字,我在LogError函数中添加了10秒的暂停。
这是怎么回事?这似乎与我同步。当LogError()函数仍然在后台运行时,我怎么能回到视图?