2011-11-09 52 views
-1

如果我有一個窗體有一個計時器來檢查其工具欄按鈕中的某些東西,現在我用這個窗體作爲一個子窗體插入另一個應用程序,定時器是否仍然運行?任何可能導致它停止工作的線程問題? 我問的原因是我有這樣一個場景,如果我在另一個應用程序中打開這個應用程序,工具欄不會更新,想看看問題是否來自這裏以及任何可能的修復?兒童窗體內的計時器

回答

2

System.Windows.Forms.Timer將在它創建的同一個線程上引發它的Tick事件,所以如果父應用程序以某種方式阻塞了它的主線程,Tick事件中的代碼將不會運行,直到線程清除,這可能是你看到的問題的原因,但是,在這種情況下,其餘的UI也應該沒有響應。 System.Timers.Timer將在單獨的線程上引發它的Tick事件,但是如果你的UI線程被阻塞了,這將會很有用,因爲即使代碼運行,這也會阻止你更新工具欄。