Asp.net 当用户';s浏览器断开连接?

Asp.net 当用户';s浏览器断开连接?,asp.net,sql-server,asynchronous,Asp.net,Sql Server,Asynchronous,我的ASP.NET(3.5)应用程序允许用户运行一些复杂的查询,这些查询最多需要4分钟才能返回结果 在执行长循环代码时,我会偶尔检查Response.IsClientConnected(),以便在用户关闭浏览器或点击停止按钮时结束页面 但是在查询SQL Server时,我的.NET代码在调用GetDataReader()时被阻止 有没有一种简单的方法可以异步执行GetDataReader(),这样我就可以等待它,但仍然可以每隔5-10秒检查一次,看看用户是否仍然连接,如果他们离开了,就放弃数据库

我的ASP.NET(3.5)应用程序允许用户运行一些复杂的查询,这些查询最多需要4分钟才能返回结果

在执行长循环代码时,我会偶尔检查
Response.IsClientConnected()
,以便在用户关闭浏览器或点击停止按钮时结束页面

但是在查询SQL Server时,我的.NET代码在调用
GetDataReader()
时被阻止

有没有一种简单的方法可以异步执行GetDataReader(),这样我就可以等待它,但仍然可以每隔5-10秒检查一次,看看用户是否仍然连接,如果他们离开了,就放弃数据库查询


或者还有其他我没有想到的替代方法吗?

我建议创建一个对象,该对象具有封装查询的
Start()
Wait()
方法。在内部使用等待查询完成。查询完成后,您将使用
Set()
函数,并在
wait()
方法中使用
WaitOne()
WaitOne(TimeSpan ts)
方法等待它。

您可以使用sqlcommand的BeginExecuteReader来获取异步sqlreader

不是100%确定这是否是你需要的


我想这是,谢谢!稍后我会做一些研究,并在我接受之前确保它符合要求。@richardtallent我从未使用过它,但我添加的附加链接显示了更多示例,并建议在command对象上使用cancel方法