【发布时间】:2011-03-27 15:58:09
【问题描述】:
我在 Visual Studio 2008 中使用 C# 完成所有这些工作。
我想放慢我的算法的工作速度,以便用户可以观看它的工作。 GUI 上有一个可见的周期性变化,所以我在每个实例之后添加了Thread.Sleep。
问题是Thread.Sleep,当设置为至少一秒时,在Thread.Sleep 的几个实例之后(经过几个循环)只会冻结整个 GUI 并保持这种状态直到程序完成。不是马上,但它总是会发生。多快取决于睡眠时间的长短。
我有证据表明整个程序没有冻结,它正在工作,甚至睡眠也在正确长度的暂停。但 GUI 会在某个点冻结,直到算法结束,此时它显示正确的最终状态。
如何解决这个问题?在特定点暂停算法的替代方案?
【问题讨论】:
-
如果你贴出相关代码会更容易帮助到你。
-
尝试挖掘多线程 Edmund
-
没有任何相关的代码 sn-p 可以发布,除了整个代码。我只是在使用: Thread.Sleep(1000);当我想要暂停 1 秒时。
-
@Hogan DoEvents?嘘。嘶。但是,当有睡眠活动时没有多大用处。
-
我just answered this question。您想改用
Timer。不要使用DoEvents;这不是任何问题的正确答案。
标签: c# multithreading user-interface visual-studio-2008 thread-sleep