当我创建一个Thread
时,我可以选择在启动它之前明确设置它的 COM 单元状态。例如:
// using System.Threading;
var thread = new Thread(…);
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
但是当我创建一个AppDomain
并将一些代码加载到其中时,我似乎对线程的创建没有明确的控制,所以我无法调用SetApartmentState
:
// using System;
var pluginAppDomain = AppDomain.Create("PluginAppDomain");
pluginAppDomain.ExecuteAssembly(@"Plugin.dll");
有没有办法指定在 an 内部创建的主/入口线程AppDomain
应该使用特定的 COM 单元状态?
我知道Plugin.dll
' 的主要入口方法可以用[STAThread]
or[MTAThread]
属性标记;但是让我们假设Plugin.dll
没有明确声明或设置 COM 单元状态,并且我无法更改Plugin.dll
.