我有一个 ASHX 可以在 SQLite 上进行批量插入。此页面加载 2 秒 +/-
在我做 I/O 工作时,使用 Async Http Handler 来实现它是一个很好的做法,它不会持有 ASP.NET 线程。
要将我的 IHttpHandler 变成 IHttpAsyncHandler 我只是这样做了,对吗?
- 将我在 ASHX 实现的接口更改为 IHttpAsyncHandler
- 添加这个变量和构造函数:
readonly Action<HttpContext> process;
public ClassConstructor()
{
process = ProcessRequest;
}
- 实现了 2 个 IHttpAsyncHandler 方法:
public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, object extraData)
{
return process.BeginInvoke(context, cb, extraData);
}
public void EndProcessRequest(IAsyncResult result)
{
process.EndInvoke(result);
}
我的主要疑问是我是否应该保留原始的 ProcessRequest 并像我一样用 Action 调用它。如果可以在 ProcessRequest 中使用 context.Response,或者这项工作应该在 EndProcessRequest 中完成