我创建了一个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.
答案 0 :(得分:1)
读取行的操作应该在单独的线程上完成。在那个帖子上你应该有这样的东西(注意它只是想法而不是确切的代码):
while(!mCancel)
{
if(mPaused==true)
{
Thread.Sleep(1000);
}
else
{
//do here the row reading
}
}
mCancel
和mPaused
是从UI按钮设置为true或false的全局标志。按“暂停”按钮时,将mPaused设置为true。此时循环将休眠1秒,然后重复并再次检查标志,如果需要,将再次休眠。
另一种方法是使用ManualResetEvent类。请参阅链接了解详情YHis类用于线程之间的信号签名,例如主线程和工作线程。 Here是一个示例。
编辑:约瑟夫·阿尔巴哈里的definitive guide to multi-threading。阅读本文,您的所有线程问题都将得到解决。
答案 1 :(得分:0)
为了跟踪暂停按钮的状态,您需要让应用程序不时处理传入的消息。实现取决于所使用的编程语言以及可能的应用程序框架。