User interface 如何防止GUI阻塞?

User interface 如何防止GUI阻塞?,user-interface,multithreading,timer,User Interface,Multithreading,Timer,我有一个计时器,每3秒滴答响一次。 如果计时器发现了什么,消息框就会显示出来。 然后计时器应该等待30秒,然后再次显示messagebox(用户当然必须有时间做出反应) 我该怎么办 我尝试了一个Thread.Sleep(30000),但是GUI当然会阻塞 我的另一个想法是在第一次滴答声之后激活第二个计时器,并在滴答声方法中重新激活第一个计时器 所以:t1勾选->消息框->点击后->t2启用(30秒勾选)->t2勾选,启用t1 但是我认为这不是一个好主意,有没有更好的方法?使用取决于语言 在任何情

我有一个计时器,每3秒滴答响一次。 如果计时器发现了什么,消息框就会显示出来。 然后计时器应该等待30秒,然后再次显示messagebox(用户当然必须有时间做出反应)

我该怎么办

我尝试了一个Thread.Sleep(30000),但是GUI当然会阻塞

我的另一个想法是在第一次滴答声之后激活第二个计时器,并在滴答声方法中重新激活第一个计时器

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


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

使用取决于语言

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


对于.NET,您可能需要研究“BackgroundWorker”

取决于语言

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

在.NET的情况下,您可能需要查看“BackgroundWorker”