有没有办法等待IHttpHandler中的任务使用任务友好的SynchronizationContext?

时间:2012-12-19 12:05:54

标签: c# asp.net asynchronous

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

0 个答案:

没有答案