0

在 asp.net 上,如果我使用 delegate.BeginInvoke 在 IHttpAsyncHandler 中调用同步数据库查询,它在读取数据库时是否仍会释放 asp.net 工作线程?

例如这篇文章: http: //madskristensen.net/post/How-to-use-the-IHttpAsyncHandler-in-ASPNET.aspx

如果我在 ServeContent 中放置一个同步数据库调用,请求还会异步发生吗?

4

2 回答 2

1

不,这是一篇误导性的文章,暗示它确实如此。为了获得好处,IHttpAsyncHandler您必须调用异步响应的东西。例如 Web 服务、异步数据库调用(例如SqlCommand.BeginExecuteReader)、唤醒休眠线程中的某些东西等。

TransmitFile(在示例文章中使用)不是异步的,而是同步的。它使用工作线程,就像任何其他同步调用一样。

于 2009-05-07T03:22:06.847 回答
0

查看BeginExecuteReader的mysql实现,它只创建了一个委托,并在AsyncExecuteWrapper方法上调用了BeginInvoke,该方法只是调用了ExecuteReader。这对我来说似乎不对,因为它只是委托内部的同步调用。所以,即使我在 IHttpAsyncHandler 中使用 mysql 连接器 BeginExecuteReader 我也不会工作。会吗?

谢谢。

于 2009-05-07T11:35:12.450 回答