ASP.NET中是否有任何方法可以在IHttpHandler中执行异步操作,然后使用通过web.config appsetting UseTaskFriendlySynchronizationContext
启用的新SynchronizationContext等待任务完成?
假设我们的代码类似于以下内容:
public void ProcessRequest(HttpContext context)
{
var task = GetAndStartAsyncTask(context);
// do some work
// Wait for task to complete.
task.Wait();
// etc.
}
这里我希望在当前的asp.net同步上下文中触发任何异步回调。如果设置UseTaskFriendlySynchronizationContext
为false,则此代码将起作用。但是,启用它和此处显示的代码将会死锁(据我所知,因为任务排队作为当前上下文的延续,但链中的第一个任务(ProcessRequest)在等待时阻塞。)
有没有办法让这项工作?
注意:我在这里使用的是IHttpHandler
,而非 IHttpAsyncHandler
。