2010-02-26 49 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