在asp.net上,如果我使用delegate.BeginInvoke在IHttpAsyncHandler中调用同步数据库查询,它是否仍会在读取数据库时释放asp.net工作线程?
例如,这篇文章:http://madskristensen.net/post/How-to-use-the-IHttpAsyncHandler-in-ASPNET.aspx
如果我将一个同步数据库调用放在ServeContent中,请求仍然会异步发生吗?
发布于 2009-05-07 03:22:07
不是的。这是一篇误导性的文章,暗示它确实是这样的。为了获得IHttpAsyncHandler的好处,您必须调用异步响应的东西。例如,web服务、异步数据库调用(如SqlCommand.BeginExecuteReader)、唤醒休眠线程中的某些内容等。
TransmitFile (在示例文章中使用)不是异步的,而是同步的。它使用一个工作线程,就像任何其他同步调用一样。
发布于 2009-05-07 11:35:12
查看BeginExecuteReader的mysql实现,它只创建了一个委托,并在AsyncExecuteWrapper方法上调用BeginInvoke,该方法只调用ExecuteReader。这在我看来是不正确的,因为它只是一个委托内部的同步调用。所以,即使我在IHttpAsyncHandler中使用mysql连接器BeginExecuteReader,我也不能工作。会吗?
谢谢。
https://stackoverflow.com/questions/832525
复制相似问题