【问题标题】:WPF application calls an API that needs a message pump; Dispather.Run() causes problemsWPF 应用程序调用需要消息泵的 API; Dispatcher.Run() 导致问题
【发布时间】:2011-04-08 03:00:38
【问题描述】:

我有一个使用非 WPF 供应商库的 WPF 应用程序。我的应用程序没有收到库触发的任何事件。有人告诉我这是因为我需要一个消息泵。

another (very similar) question 中,接受的答案建议使用 System.Windows.Threading.Dispatcher.Run()。

但是,当我添加该调用时,我的窗口不会弹出 - 该应用程序实际上已在后台运行,我必须使用任务管理器将其关闭。

我真的很困惑,我什至不知道如何调查它。任何帮助将不胜感激。

【问题讨论】:

    标签: wpf com message-pump


    【解决方案1】:

    如果您使用 WPF,您已经拥有一个,没有其他方法可以获取任何 Windows 通知。每个 WPF 应用程序都通过在主线程上调用 Application.Run() 开始生命。它通常隐藏得很好,在 bin\debug\app.g.cs 源代码文件中自动生成。 Application.Run() 依次调用 Dispatcher.Run()

    您的供应商是正确的,如果没有消息循环,许多 COM 组件就会变得紧张。但既然你有一个,你需要在别处寻找问题。不要在线程上使用组件。

    【讨论】:

    • 谢谢,那说明我没疯。我有一个正在运行的演示 WPF 应用程序,但它在我的真实应用程序中不起作用。我认为我可能缺少 WPF/Dispatcher 交互的某些方面,但似乎没有。我的问题一定出在其他地方。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-29
    • 1970-01-01
    • 2019-01-27
    • 1970-01-01
    • 2010-10-09
    相关资源
    最近更新 更多