在下面的代码中,有一个 HttpTaskAsyncHandler 调用 doit 首先延迟 5 秒并将字符串写入浏览器。
如果我打开了两个浏览器选项卡并在两者上调用此页面。第一个在 5 秒内响应,第二个在 10 秒内响应。
为什么第二个请求要等待第一个完成?延迟只是代表完成工作所花费的时间。
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());
}
}