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

C# 在for或while循环中停止sql插入,c#,asp.net,sql,linq,C#,Asp.net,Sql,Linq,我创建了一个高达100的循环,以在db中插入任何数据。 但当我关闭浏览器时,我希望它停止,但在后台它继续循环并填充我的数据库。我怎样才能阻止它 谢谢关闭SQL Server和/或IIS 编辑:…假设你犯了一个编程错误,你的数据库一直在填充,你拼命想停止它——这就是我对你的问题的理解。如果你在服务器上通过一个http请求来完成这项工作(例如,响应代码中的按钮事件),那么服务器就不太关心浏览器了。如果你希望在浏览器停止时停止插入,我建议也许通过Ajax循环来实现这一点,但是请注意,这将是相当慢的,因

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


谢谢

关闭SQL Server和/或IIS


编辑:…假设你犯了一个编程错误,你的数据库一直在填充,你拼命想停止它——这就是我对你的问题的理解。

如果你在服务器上通过一个http请求来完成这项工作(例如,响应代码中的按钮事件),那么服务器就不太关心浏览器了。如果你希望在浏览器停止时停止插入,我建议也许通过Ajax循环来实现这一点,但是请注意,这将是相当慢的,因为你将有100次往返行程,并且在服务器上有100个不同的处理集。

一个创可贴解决方案:


让您的网页每隔5秒左右向服务器发送keep-alive AJAX调用,如果未收到keep-alive,则中止:)

听起来您是从ASP.NET表单开始此过程的,服务器端代码执行循环以响应某个操作(ASP.NET表单加载或单击按钮等)

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

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


编辑:我注意到,除了提到停止IIS/SQL之外,其他答案都投了反对票。当然,这是一种“最后关头”机制,用于停止由“客户端”调用但在“服务器”上运行的长时间运行的进程。如果要在“真实”应用程序中执行此操作,并且您希望允许用户取消长时间运行的应用程序,则需要Marc建议的方法(即使用AJAX,“轮询”带有AJAX的网页“刷新”,并响应后续用户输入(即点击按钮))。

不保证它会工作,但是你可以试试酒店

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

    // insert the next row
}
for(int i=0;i<100;i++)
{
如果(!Response.IsClientConnected)中断;
//插入下一行
}

您的代码是什么样子的?希望它能与iis stop一起工作,因为sql server是远程的。谢谢,我喜欢测试一个大程序。。但是任何时候我都想停止它。好吧,在这种情况下,最优雅的解决方案可能是将插入代码放入后台线程,并在您的aspx页面上创建一个停止按钮来停止此线程。顺便说一句:如果有人能解释或“修复”否决票,我将不胜感激。。。