有人可以向我解釋我看到的這個錯誤是什麼嗎?OpenFileDialoug當前線程在OLE調用之前必須是STA
在進行OLE調用之前,當前線程必須設置爲單線程單元(STA)模式。
具體來說,我試圖在窗體上打開C++/CLI中的SaveFileDialog/OpenFileDialog。
SaveFileDialog^ saveFileDialog1 = gcnew SaveFileDialog;
saveFileDialog1->ShowDialog();
if (saveFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK)
{
s = saveFileDialog1->OpenFile();
}
s->Close();
}
所引發錯誤是
型 'System.Threading.ThreadStateException' 的未處理的異常出現在System.Windows.Forms.dll中
附加信息:當前線程必須在進行OLE呼叫之前設置爲單線程單元(STA)模式。確保您的Main函數具有標記的STAThreadAttribute。只有在調試器連接到進程時纔會引發此異常。
我不是很熟悉這個錯誤是在說什麼。我只知道一些關於線程的知識,但我不確定線程是如何成爲問題的。我已經看到一些人引用像STAThread這樣的東西,但沒有提供關於它做什麼的明確解釋,而且Microsoft的文檔沒有提到在調用SaveFileDialog/OpenFileDialog時拋出此異常,或者如何處理它。
謝謝!