OpenFileDialog^ dialog = gcnew OpenFileDialog;
dialog->ShowDialog();
这可能有什么问题? 我在Windows 7上使用Visual Studio 2008 Professional和.NET Framework 3.5 我创建了一个按钮,并添加了一个Click函数,然后我将上面的代码放入,并抛出此错误:
An unhandled exception of type 'System.Threading.ThreadStateException' occurred in System.Windows.Forms.dll
我将它从葡萄牙语翻译成英语,因为我的Visual Studio以葡萄牙语输出错误。
附加信息:当前线程应在STA中定义 可以在OLE调用之前完成模式(单线程单元)。检查是否 Main Function已检查STAThreadAttribute。例外情况会 只有在调试器附加到线程时才会生成(或者可能 处理)。
这是葡萄牙语中的原始错误:
附加信息:O thread atual deve ser definido no modo STA (单线公寓)antes que chamadas OLE possam ser feitas。 Verifique sefununçãoMaintem STAThreadAttribute marcado。一个例外 somenteserágeradase um depurador estiver anexado ao processo。
顺便说一句,所有的microsoft默认设置都已设置,Windows Forms Application在创建项目时预设的所有库, 我希望我很清楚 提前致谢
答案 0 :(得分:4)
要求你提出:
[STAThread]
在你的主要功能上。这意味着clr应该启动单线程公寓。 Windows窗体不能在MTA(多线程单元)中工作。
进一步阅读:http://blogs.msdn.com/b/jfoscoding/archive/2005/04/07/406341.aspx