2010-02-26 132 views
5

我正在使用第三方Windows窗體控件執行一些使用Application.Idle事件「延遲」的操作。Application.Idle事件在WPF應用程序中未觸發

現在我們將應用程序移動到WPF,這些操作停止工作。 我發現System.Windows.Forms.Application.Idle事件不像預期的那樣引發。

我怎樣才能得到空閒事件在WPF應用程序火,使我可以繼續使用第三方控件(一個WindowsFormsHost內)?它是而不是可能修改Windows窗體控件。

回答

9

你應該閱讀this page on MSDN它描述了一個WPF應用程序的消息循環行爲。特別是它看起來像ComponentDispatcher類可以用來捕獲一個ThreadIdle事件,它大致對應於Windows窗體Application.Idle事件。

然後,您可以大概用System.Windows.Forms.Application.RaiseIdle方法的組件需要提高閒置事件。

+5

謝謝,我不知道ComponentDispatcher。 一條線(ComponentDispatcher.ThreadIdle + =(發件人,E)=> System.Windows.Forms.Application.RaiseIdle(E)),我的問題就解決了! – Daniel 2010-02-26 21:16:36

0

如果您使用的是WPF應用程序,你實際上是不再使用System.Windows.Forms.Application類來運行應用程序,即使你的應用程序包含一個Windows窗體控件。

相反,您使用的是System.Windows.Application class(不同的命名空間)。

+0

正如OP所示,他處於使用無法修改的控件的互操作場景中。 – Josh 2010-02-26 20:18:54

相關問題