WPF应用程序调用需要消息泵的API; Dispather.Run() 导致问题
我有一个使用非 WPF 供应商库的 WPF 应用程序。我的应用程序没有收到库触发的任何事件。有人告诉我这是因为我需要一个消息泵。
在 另一个(非常相似)问题,接受的答案建议使用 System.Windows.Threading.Dispatcher.Run()。
然而,当我添加该调用时,我的窗口不会弹出 - 该应用程序实际上处于后台,我必须使用任务管理器将其关闭。
我真的很困惑这里,我什至不知道如何调查它。任何帮助将不胜感激。
I have a WPF app that uses a non-WPF vendor library. My app does not receive any events that the library fires. I've been told that this is because I need a message pump.
In another (very similar) question, the accepted answer suggested using System.Windows.Threading.Dispatcher.Run().
When I add in that call, however, my window won't pop up-- the app is effectively backgrounded and I have to shut it down with Task Manager.
I'm really stumped here, and I'm not even sure how to investigate it. Any help would be greatly appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您使用 WPF,那么您已经拥有了一个,没有其他方法可以获取任何 Windows 通知。每个 WPF 应用程序都是通过在主线程上调用 Application.Run() 来启动生命的。它通常隐藏得很好,自动生成在 bin\debug\app.g.cs 源代码文件中。 Application.Run() 依次调用 Dispatcher.Run()
您的供应商是正确的,如果没有消息循环,许多 COM 组件就会陷入紧张状态。但既然你已经有了一个,你就需要在其他地方寻找问题。不要在线程上使用该组件。
You already have one if you use WPF, there's no other way that it can get any Windows notifications. Every WPF app starts life with a call to Application.Run() on the main thread. It is usually well hidden, auto-generated in the bin\debug\app.g.cs source code file. Application.Run() in turn calls Dispatcher.Run()
Your vendor is correct, without a message loop many COM components go catatonic. But since you have one you need to look for the problem elsewhere. Don't use the component on threads.