.net类的事件未在第二个appdomain中引发

时间:2014-11-05 09:36:53

标签: c# .net com appdomain

以下情况:.Net4 WPF应用程序在启动时创建多个appdomains,在第一个自定义创建的appdomain中启动主窗口,模拟单个进程内的多实例行为,例如:我能够开始第二个,第三个......主窗口,其中每个窗口都会在自己的应用程序域中运行,与其他应用程序隔离(经验教训,不会影响本机组件)

AppDomain appDomain = AppDomain.CreateDomain("FancyAppDomainIdentifier");
appDomain.DoCallBack(() =>
       {
            var thread = new Thread(OnThreadStart);
            thread.SetApartmentState(ApartmentState.STA);
            thread.Start();
       });

OnThreadStart()基本上是在做

new App().Run();

其中App是标准System.Windows.Application。

到目前为止,这一直很好用,但现在我有了第三方组件,它基本上是一些.net包装器,用于与某些硬件交互的一些com组件。包装器组件正在引发事件以中继硬件事件(按下按钮)但如果我在第一个自定义创建的appdomain中注册eventhandler,则不会引发这些事件。

如果我从负责创建自定义应用程序域的方法中删除[STAThread]属性,则将第一个自定义创建的appdomain作为第一个运行STA的线程,将引发事件。

在使用此设置运行多个窗口时,我遇到了本机组件的问题,但由于这只是一个窗口而且只有一个包装器实例被卡住了。

0 个答案:

没有答案