我正在使用第三方Windows窗体控件,它使用Application.Idle事件执行“延迟”操作。
现在我们正在将应用程序移动到WPF,这些操作已停止工作。 我发现System.Windows.Forms.Application.Idle事件没有按预期引发。
如何在WPF应用程序中触发Idle事件,以便我可以继续使用该第三方控件(在WindowsFormsHost中)? 不可以修改Windows窗体控件。
答案 0 :(得分:9)
您应该阅读this page on MSDN,其中描述了WPF应用程序中的消息循环行为。特别是看起来ComponentDispatcher类可以用来捕获一个大致对应于Windows Forms Application.Idle事件的ThreadIdle事件。
然后,您可以使用System.Windows.Forms.Application.RaiseIdle方法来提升组件所期望的Idle事件。
答案 1 :(得分:0)
如果您使用的是WPF应用程序,则实际上您不再使用System.Windows.Forms.Application类来运行您的应用程序,即使您的应用程序包含Windows窗体控件也是如此。
相反,您正在使用System.Windows.Application class(不同的命名空间)。