1

以下のコードには、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());
    }

}
4

1 に答える 1