C# - Thread.Sleep的替代方案?

0 c# visual-studio-2008 slowdown

我在Visual Studio 2008中用C#做这一切.

我想减慢算法的工作速度,以便用户可以观察它的工作.在GUI上可以看到周期性变化,所以我在每个实例后添加了"thread.sleep".

问题是"thread.sleep",当设置为至少一秒时,在"thread.sleep"的几个实例(在几个循环之后)之后简单地冻结整个GUI并保持这种方式直到程序完成.不是马上,但它总是发生.多久取决于睡眠的长短.

我有证据表明整个程序都没有冻结,它正在工作,即使睡眠正在暂停正确的长度.但是GUI会在某个时刻冻结,直到算法结束,此时它会显示正确的最终状态.

如何解决这个问题?在某些时候暂停算法的替代方案?

小智 6

首先,不要让用户在他们考虑什么时候完成之前等待完成的工作.这是毫无意义.请说,不.

其次,你正在"睡觉"UI线程.这就是UI线程"锁定"的原因.无法阻止UI线程; 如果是,则UI线程无法更新表单上的控件并响应系统消息.响应系统消息是UI线程的一项重要任务; 如果不这样做,您的应用程序将显示为锁定系统.不是一件好事.

如果你想完成这个(请不要)只是在你开始做工作时创建一个Timer,当它Ticks时,指示它停止假装工作的时间.

再说一遍,请不要这样做.