如何在Windows应用程序中暂停和恢复进程

时间:2011-01-03 06:57:28

标签: c# multithreading

我创建了一个Windows应用程序,用于从电子表格中读取每一行并将每行数据传递给存储过程。假设这项工作进行了2个小时(因为有大量的数据)。我已经放置了两个按钮暂停和取消。点击pasue,我需要暂停更新工作的工作,并且需要在再次按下按钮时恢复。请提供一些有关此事的意见。我正在使用Visual Studio 2003(带有1.1框架)和SQL 2005.我正在使用c#进行编程

Could you guys please explain how to put the main thread in background(while paused)... Please respond soon as it is urgent.

2 个答案:

答案 0 :(得分:1)

读取行的操作应该在单独的线程上完成。在那个帖子上你应该有这样的东西(注意它只是想法而不是确切的代码):

while(!mCancel)
{
   if(mPaused==true)
   {
      Thread.Sleep(1000);
   }
   else
   {
       //do here the row reading
   }

}

mCancelmPaused是从UI按钮设置为true或false的全局标志。按“暂停”按钮时,将mPaused设置为true。此时循环将休眠1秒,然后重复并再次检查标志,如果需要,将再次休眠。

另一种方法是使用ManualResetEvent类。请参阅链接了解详情YHis类用于线程之间的信号签名,例如主线程和工作线程。 Here是一个示例。

编辑:约瑟夫·阿尔巴哈里的definitive guide to multi-threading。阅读本文,您的所有线程问题都将得到解决。

答案 1 :(得分:0)

为了跟踪暂停按钮的状态,您需要让应用程序不时处理传入的消息。实现取决于所使用的编程语言以及可能的应用程序框架。