如何防止GUI阻塞?

时间:2010-03-12 11:50:25

标签: user-interface multithreading timer

我有一个计时器,每隔3秒就会打勾一次。 如果计时器发现了消息框将显示的内容。 然后计时器应该等待30秒,然后再次显示消息框(用户当然必须有时间做出反应)。

我该如何处理?

我尝试了一个Thread.Sleep(30000),但当然是GUI块。

我的另一个想法是第二个计时器,它将在第一个计时器后激活并重新激活tick方法中的第一个计时器。

所以:t1 tick - >消息框 - >点击后 - > t2启用(30秒刻度) - > t2 tick,启用t1

但我认为这不是一个好主意,还有更好的方法吗?

2 个答案:

答案 0 :(得分:3)

取决于语言。

在任何情况下,您都必须创建第二个执行等待和检查的线程。

如果是.NET,您可能需要查看“BackgroundWorker”

答案 1 :(得分:1)