执行某些任务时程序锁定

时间:2011-02-03 14:58:51

标签: vb.net

我有一个程序可以选择创建还原点...

我的问题是,当你点击它时,程序会锁定,直到它完成创建还原点。

我在程序中放了一个单独的表单,它有一个我下载的Marquee Progress Bar Control,所以想法就是......

用户点击“创建还原点”

frmRestore.show 创建还原点时,Marquee Progress Bar会一直打开 还原点已完成 frmRestore.hide

问题是,当您单击创建还原点时,表单显示并且程序刚刚锁定,创建还原点时,表单会再次隐藏。

使用后台工作人员可以解决此问题吗?说实话,我不完全确定它是做什么的,我用控件捣乱,但似乎找不到任何有用的东西。

谢谢

3 个答案:

答案 0 :(得分:1)

您需要将还原过程放在单独的线程中。如果您的程序不是多线程的,那么它将工作线性并锁定,直到它完成它正在执行的任务。

答案 1 :(得分:1)

程序被锁定,因为你在主线程上正在做一些密集的事情。

在GUI应用程序中如下所示:

//做一些事情

//回应系统并重绘gui

//做一些事情

//回应系统并重绘gui

当你阻止“//做一些事情”时,程序将无法响应并重绘gui,直到完成某些事情。

您需要做的是使用辅助线程或使用像您所说的后台工作程序。一个线程就像,你可以在不阻塞系统或GUI的情况下完成任务。

希望这会有所帮助

答案 2 :(得分:0)

我从来没有认真地使用VB,但我认为相同的概念适用于Qt(开始大声谈论Qt在这里更好)。

我不确定VB是使用GUI线程还是只使用一个统一的线程,但我认为你的问题是GUI线程正在执行长的非gui操作,导致它“锁定”。当它“锁定”时,程序正在等待任务完成,因此不允许您与之交互。

使用单独的线程......