在可以調用 OLE 之前,必須將當前線程設置為單線程單元(STA)模式,請確保您的Main函數帶有STAThreadAttribute標記。 多線程操作剪切板的時候。


        最近做一個蛋疼的東西就是C#調用windows API 來操作一個 軟件,自動處理一些東西。要用到剪切板復制 粘貼功能,即 Clipboard.SetDataObject(filedic, true)等。

本來測試的時候,通過主線程 按鈕點擊開始的時候沒有任何問題。但是把整個過程放在一個單獨一個線程的時候一到復制的時候就報錯,

“在可以調用 OLE 之前,必須將當前線程設置為單線程單元(STA)模式,請確保您的Main函數帶有STAThreadAttribute標記”。但是查看我的主線程main函數旁邊贏標記過了。

不知道怎么辦,想想是不是要在線程函數上也標記,但是我想太多了,不行。最后度娘搜索多線程 “在可以調用 OLE 之前,必須將當前線程設置為單線程單元(STA)模式,請確保您的Main函數帶有STAThreadAttribute標記”

錯誤,度娘里知道線程有個ApartmentState  屬性 ,其實我也沒有整明白,就知道 有STA 等枚舉類型。想想應該是這里的問題。就把單獨線程設置成 _thread.SetApartmentState(ApartmentState.STA); 

還真的再沒有報上述錯誤。算是把問題解決了。但是為什么會是這樣的。等后面研究明白了更新隨筆。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



猜您在找 在可以調用OLE之前,必須將當前線程設置為單線程單元(STA)模式,請確保您的Main函數帶有STAThreadAttribute 解決“System.Threading.ThreadStateException:“在可以調用 OLE 之前,必須將當前線程設置為單線程單元(STA)模式。請確保您的 Main 函數帶有 STAThreadAttribute 標記。 只有將調試程序附加到該進程才會引發此異常”的異常 C#解決“System.Threading.ThreadStateException:“在可以調用 OLE 之前,必須將當前線程設置為單線程單元(STA)模式。請確保您的 Main 函數帶有 STAThreadAttribute 標記。 只有將調試程序附加到該進程才會引發此異常”的異常 選擇目錄,選擇文件夾的COM組件問題。在可以調用 OLE 之前,必須將當前線程設置為單線程單元(STA)模式。請確保您的 Main 函數帶有 STAThreadAttribute 標記。 只有將調試器附加到該進程才會引發此異常。 在可以調用 OLE 之前,必須將當前線程設置為單線程單元(STA)模式 在可以調用 OLE 之前,必須將當前線程設置為單線程單元(STA)模式 異常錯誤:在可以調用 OLE 之前,必須將當前線程設置為單線程單元(STA)模式 如何解決C#異常:必須先將當前線程設置為單線程單元(STA)模式,然后才能進行OLE調用,請確保你的Main函數已在其上標記了STAThreadAttribute 當前線程不在單線程單元中,因此無法實例化 ActiveX 控件 PHP單線程和多線程調用
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM