C#应用程序进程在一段时间后挂起

see*_*edg 2 c# mysql multithreading process

我实现了一个简单的C#应用​​程序,它将大约350000条记录插入到数据库中.这曾经运作良好,过程大约需要20分钟.

我创建了一个进度条,让您大致了解记录插入的进度.当进度条达到约75%时,它会停止前进.我必须手动终止程序,因为该过程似乎没有完成.如果我使用较少的数据(如10000),则进度条结束并且过程完成.但是,当我尝试插入所有记录时,这将不再发生.

请注意,如果我等待更长时间手动终止程序,则会插入更多记录.例如,如果我在15分钟后终止程序,则插入200000条记录,而如果我在20分钟后终止程序,则插入250000条记录.

该程序使用单个线程.在这个过程完成之前,我无法做任何其他事情.这与线程或进程有什么关系吗?

任何反馈将不胜感激.

谢谢.

Mar*_*ers 9

令人惊讶的是,您的进度条可以正常工作.如果您不使用单独的线程,则长时间运行的任务将阻止消息循环运行,从而导致应用程序无响应.

您应该使用BackgroundWorker运行此任务.将长时间运行的代码放在DoWork事件的处理程序中.使用ReportProgess更新进度条.不要直接从DoWork处理程序内部访问表单控件.

有一些如何在MSDN上执行此操作的示例.

此外,请确保不更新每个更改的进度条.如果您有100,000条记录,则仅更新每100或1000条记录的进度条.太多事件也可能导致程序停止响应.