まず、前向きな謝罪:次のバグを単純なコンソールアプリケーションに分離することはできません。ただし、私の比較的単純なASP.NET Webフォームアプリケーションでは、次のコードにより、現在のスレッドが無期限にブロックされます。
public class MyModule : IHttpModule
{
public void Dispose()
{
}
public void Init(System.Web.HttpApplication context)
{
context.BeginRequest += this.Context_BeginRequest;
}
private void Context_BeginRequest(object sender, EventArgs e)
{
Sleep().Wait();
var x = 2; // This line is never hit.
}
private async Task Sleep()
{
await TaskEx.Run(() => System.Threading.Thread.Sleep(1000));
}
}
タスクの状態は「WaitingForActivation」のままです。なぜこれが起こるのか誰かが知っていますか?