在for或while循环中停止sql插入

时间:2009-10-20 11:47:16

标签: c# asp.net sql linq

我创建了一个高达100的循环来插入db中的任何数据。 但当我关闭我的浏览器时,我希望它停止但它在后台继续循环并填充我的数据库。我怎么能阻止它?

感谢

5 个答案:

答案 0 :(得分:4)

不保证它会起作用,但您可以尝试HttpResponse.IsClientConnected属性。

for (int i = 0; i < 100; i++)
{
    if (!Response.IsClientConnected) break;

    // insert the next row
}

答案 1 :(得分:3)

听起来你已经从ASP.NET表单开始这个过程,服务器端代码执行循环以响应某些东西(ASP.NET表单加载,或点击按钮等)。

请注意,关闭浏览器窗口不会停止在“服务器”上调用的任何长时间运行的代码进程。虽然这可能在同一台计算机上运行,​​但此处的“服务器”是IIS / Cassini进程,用于将您的网页提供给“客户端”(您的浏览器)。

要停止此操作,您需要停止/关闭IIS或Cassini(在本地开发计算机上运行Web应用程序时Visual Studio使用的Cassini小型Web服务器),或者停止/关闭SQL Server进程

编辑:我注意到其他答案的downvotes,而不是提到停止IIS / SQL。当然,这是一种“最后一个喘息机制”,用于停止由“客户端”调用但在“服务器”上运行的长时间运行的进程。如果要在“真实”应用程序中完成,并且您希望允许用户取消长时间运行的应用程序,则需要Marc建议的方法(即使用AJAX,“轮询”网页AJAX“刷新”并响应后续用户输入(即按钮点击)。)

答案 2 :(得分:2)

如果您在单个http请求中在服务器上执行此操作(例如,响应代码隐藏中的按钮事件),则服务器并不真正关心浏览器。如果你想在浏览器停止时停止插入,我建议也许通过一个ajax循环这样做 - 但请注意,这将会相当慢,因为你将有100次往返,并在服务器上进行100次独立的处理

答案 3 :(得分:1)

创可贴解决方案怎么样:

让你的网页每隔5秒左右向服务器发送保持活动的AJAX呼叫,如果没有收到保持活动状态则中止:)

答案 4 :(得分:0)

关闭SQL Server和/或IIS。

编辑: ...假设你犯了一个编程错误,你的数据库一直在填满,你拼命想要阻止它 - 这就是我理解你的问题的方式。