我正在使用第三方 Windows 窗体控件,该控件使用 Application.Idle 事件“延迟”执行一些操作。
现在我们将应用程序移至 WPF,这些操作停止工作。我发现 System.Windows.Forms.Application.Idle 事件未按预期引发。
如何在 WPF 应用程序中触发 Idle 事件,以便我可以继续使用该第三方控件(在 WindowsFormsHost 中)?无法修改 Windows 窗体控件。
我正在使用第三方 Windows 窗体控件,该控件使用 Application.Idle 事件“延迟”执行一些操作。
现在我们将应用程序移至 WPF,这些操作停止工作。我发现 System.Windows.Forms.Application.Idle 事件未按预期引发。
如何在 WPF 应用程序中触发 Idle 事件,以便我可以继续使用该第三方控件(在 WindowsFormsHost 中)?无法修改 Windows 窗体控件。
您应该阅读MSDN 上的此页面,该页面描述了 WPF 应用程序中的消息循环行为。特别是看起来 ComponentDispatcher 类可用于捕获大致对应于 Windows 窗体 Application.Idle 事件的 ThreadIdle 事件。
然后,您大概可以使用System.Windows.Forms.Application.RaiseIdle方法来引发组件期望的 Idle 事件。
如果您使用的是 WPF 应用程序,您实际上不再使用 System.Windows.Forms.Application 类来运行您的应用程序,即使您的应用程序包含 Windows 窗体控件。
相反,您使用的是System.Windows.Application 类(不同的命名空间)。