【发布时间】: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);
}
我在这里缺少什么来分离两个进程以使它们不再共享相同的输入队列的任何想法?
【问题讨论】:
-
一般问题在这里也很好解释:stackoverflow.com/questions/16817112/…
标签: c# wpf plugins message-queue win32-process