以下のコードには、doit を呼び出す HttpTaskAsyncHandler があり、最初に 5 秒遅延して、文字列をブラウザーに書き込みます。
2 つのブラウザー タブを開いて、両方でこのページを呼び出すとします。1 回目は 5 秒で、2 回目は 10 秒で応答します。
2 番目の要求が最初の要求が完了するまで待機するのはなぜですか? 遅延は、仕事をするのにかかった時間を表すためのものでした。
public class MyHandler : HttpTaskAsyncHandler
{
public override bool IsReusable
{
get
{
return true;
}
}
public override Task ProcessRequestAsync(HttpContext p_ctx)
{
return doit(p_ctx);
}
static int _count = 0;
async Task doit(HttpContext p_ctx)
{
await Task.Delay(5000);
p_ctx.Response.Write("doit " + (++_count).ToString());
}
}