有人可以向我解释我看到的这个错误是什么吗?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时抛出此异常,或者如何处理它。
谢谢!