2011-11-09 34 views
-1

如果我有一个窗体有一个计时器来检查其工具栏按钮中的某些东西,现在我用这个窗体作为一个子窗体插入另一个应用程序,定时器是否仍然运行?任何可能导致它停止工作的线程问题? 我问的原因是我有这样一个场景,如果我在另一个应用程序中打开这个应用程序,工具栏不会更新,想看看问题是否来自这里以及任何可能的修复?儿童窗体内的计时器

回答

2

System.Windows.Forms.Timer将在它创建的同一个线程上引发它的Tick事件,所以如果父应用程序以某种方式阻塞了它的主线程,Tick事件中的代码将不会运行,直到线程清除,这可能是你看到的问题的原因,但是,在这种情况下,其余的UI也应该没有响应。 System.Timers.Timer将在单独的线程上引发它的Tick事件,但是如果你的UI线程被阻塞了,这将会很有用,因为即使代码运行,这也会阻止你更新工具栏。