【问题标题】:Hosting WPF plugin cross-process issue托管 WPF 插件跨进程问题
【发布时间】:2017-03-24 09:06:56
【问题描述】:

我使用类似于http://www.codeproject.com/Articles/516431/Baktun-Shell-Hosting-WPF-Child-Windows-in-Another 的方法通过 AddInHost(派生自 HwndHost)类在另一个进程中托管 WPF 应用程序(插件)。

只要我不暂停子进程,它就可以正常工作。如果我这样做了,那么父进程也会被冻结。原因是父/子进程共享同一个(同步)输入队列:Good or evil - SetParent() win32 API between different processes

在使用 SetParent Win32 函数挂起插件进程之前,我已经尝试将这两个进程解耦,但即使插件随后与主机应用程序解耦,也无助于解决问题:

public static void Decouple(HwndHost hwndHost)
{
  SetParent(hwndHost.Handle, IntPtr.Zero);
}

我在这里缺少什么来分离两个进程以使它们不再共享相同的输入队列的任何想法?

【问题讨论】:

标签: c# wpf plugins message-queue win32-process


【解决方案1】:

对我来说,解决方案是使用 AttachThreadInput Win32 API 函数来分离插件 HwndHost 输入队列

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    • 2016-05-07
    相关资源
    最近更新 更多