Super Basic OpenFileDialog в C ++ / CLI выдает ошибку - PullRequest
1 голос
/ 29 марта 2012
OpenFileDialog^ dialog = gcnew OpenFileDialog;
dialog->ShowDialog();

Что может быть не так с этим?Я использую Visual Studio 2008 Professional в Windows 7 с .NET Framework 3.5. Я создал кнопку, добавил функцию щелчка, вставил приведенный выше код и просто выдал эту ошибку:

An unhandled exception of type 'System.Threading.ThreadStateException' occurred in System.Windows.Forms.dll

Я перевел еес португальского на английский, поскольку моя Visual Studio выдавала ошибку на португальском языке.

Дополнительная информация: текущий поток должен быть определен в режиме STA (однопотоковая квартира), прежде чем можно будет выполнять вызовы OLE.Проверьте, проверена ли основная функция атрибута STAThreadAttribute.Исключение будет сгенерировано только в том случае, если отладчик подключен к потоку (или может быть к процессу).

, и это первоначальная ошибка на португальском языке:

Дополнительная информация: O потоков, как правило, нет модо STA (однопотоковая квартира), antes que chamadas OLE possam ser feitas.Verifique se a função Main tem STAThreadAttribute marcado.Исключительная ситуация, когда у вас возникли проблемы с развертыванием и процессом обработки.

Кстати, все компоненты Microsoft по умолчанию установлены, все библиотеки, которые Windows Forms Application настраивают при создании проекта, я надеюсь, я был свободенДостаточно заранее Спасибо

1 Ответ

4 голосов
/ 29 марта 2012

Он просит вас добавить:

[STAThread]

в вашу основную функцию.Это означает, что clr должен начать однопотоковую квартиру.Windows Forms не будут работать в MTA (многопоточных квартирах).

Подробнее читайте здесь: http://blogs.msdn.com/b/jfoscoding/archive/2005/04/07/406341.aspx

...