Может кто-нибудь объяснить мне, что это за ошибка, которую я вижу?OpenFileDialoug Текущая тема должна быть STA до того, как сделанные вызовы OLE
Текущий поток должен быть установлен в режим однопоточной квартиры (STA) до того, как вызовы OLE могут быть выполнены.
В частности, я пытаюсь открыть SaveFileDialog/OpenFileDialog внутри C++/CLI в форме.
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
Дополнительная информация: Текущий поток должен быть настроен на режим однопоточной квартиры (STA) до того, как могут быть сделаны вызовы OLE. Убедитесь, что ваша основная функция имеет STAThreadAttribute, отмеченный на нем. Это исключение возникает только в том случае, если к процессу прикреплен отладчик.
Я не очень хорошо знаю, что говорит эта ошибка. Я немного знаю о потоках, но я не уверен, что проблема с потоками будет проблемой. Я видел, как некоторые люди ссылаются на такие вещи, как STAThread, не давая ясного объяснения тому, что он делает, и в документации Microsoft не упоминается о том, что это исключение было вызвано при вызове SaveFileDialog/OpenFileDialog или как его обрабатывать.
Спасибо!