我有一個生成新線程,如下的方法:我現在得到Access denied (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
異常從COM互操作我想啓動一個線程與同在C#.NET父安全上下文
Thread thread = new Thread(() => ClassObject.SetXY(var1, var2));
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();
。 當我在同一父線程中運行該函數時,我沒有得到該異常。但是,我需要它在單獨的線程中運行以將公寓狀態設置爲STA。我目前正在運行我的代碼作爲Windows服務,甚至當我在主要方法上使用[STAThread]時,我沒有得到這個工作。
簡單地說,我需要什麼:
1-無論是啓動一個線程(STA)像上面具有相同的安全 上下文父線程。
2 - 不啓動一個新線程(這將解決訪問被拒絕的問題,但 將拋出一個異常,由於線程的單元狀態不 是STA),但使Windows服務運行的線程在STA 公寓狀態。
感謝
嘗試使用線程池確實副本調用者的安全上下文。 – user629926 2012-08-14 23:30:49
@ user629926:之前沒有使用過,可以顯示一些代碼,我可以如何使用threadpool來做上面的代碼? – 2012-08-14 23:33:19
我發現它使用內部的ExecutionxContext嘗試調查。我的意思是隻調用ThreadPoll.QueieUserWorkItem而不是創建新線程。 – user629926 2012-08-14 23:46:52