次のように新しいスレッドを生成するメソッドがあります。
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 サービスとして実行していますが、メイン メソッドで [STAThread] を使用しても機能しません。
私が必要とするもの:
1-上記のように、親スレッドと同じセキュリティコンテキストを持つスレッド (STA) を開始します。
2- 新しいスレッドを開始しないでください (これによりアクセス拒否の問題は解決しますが、スレッドのアパートメント状態が STA ではないため例外がスローされます)、Windows サービスのスレッドを STA アパートメント状態で実行します。
ありがとう