【发布时间】:2021-06-20 08:39:12
【问题描述】:
我需要使用当前 SynchronizationContext 运行任务。我使用任务工厂来做:
Task.Factory.StartNew(async () =>
{
...
var result =
await service.AsyncOperation(data);
...
},
CancellationToken.None,
TaskCreationOptions.None,
TaskScheduler.FromCurrentSynchronizationContext());
异步操作方法:
object async AsyncOperation(object data){
...
//some async operation here
await dal.SaveToDb(data);
...
}
问题:
执行await dal.SaveToDb(data); AsyncOperation 方法后没有恢复(dal.SaveToDb(data) 之后的代码根本没有执行)。似乎在等待后它会将线程释放到线程池,但在异步操作完成后(SaveToDb)不会恢复执行剩余代码。
为什么会这样???如果我确实需要使用当前 SynchronizationContext 运行任务,我该如何解决(因为我需要 HttpContext)
【问题讨论】:
标签: .net asp.net-mvc async-await httpcontext synchronizationcontext