我有一个方法可以生成一个新线程,如下所示:
Thread thread = new Thread(() => ClassObject.SetXY(var1, var2));
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();
(Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
我目前从我正在尝试的 COM 互操作中获得拒绝访问异常。当我在同一个父线程中运行该函数时,我没有得到那个异常。但是,我需要它在单独的线程中运行以将公寓状态设置为 STA。我目前正在将我的代码作为 Windows 服务运行,即使我在 main 方法上使用 [STAThread],我也无法让它工作。
简要地说我需要什么:
1-启动一个像上面一样的线程(STA),它与父线程具有相同的安全上下文。
2-不要启动一个新线程(这将解决访问被拒绝的问题,但由于线程的单元状态不是STA而引发异常),而是使Windows服务的线程在STA单元状态下运行。
谢谢