2

ASP.NET で IHttpHandler で非同期操作を実行し、web.config appsetting で有効になった新しい SynchronizationContext を使用してタスクが完了するのを待つ方法はありますUseTaskFriendlySynchronizationContextか?

次のようなコードがあるとします。

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) が Wait でブロックされているためです)。

これを機能させる方法はありますか?

注: ここではなく、 を使用しIHttpHandlerますIHttpAsyncHandler

4

0 に答える 0