【发布时间】:2011-06-16 14:33:27
【问题描述】:
在后台线程中调用saveFileDialog.ShowDialog() 时出现以下异常:
当前线程必须设置为单线程 OLE 之前的线程单元 (STA) 模式 可以拨打电话。确保您的 主函数具有 STAThreadAttribute 标记在上面。
根据this:
要解决此问题,请插入 声明:
Threading.Thread.CurrentThread.ApartmentState = Threading.ApartmentState.STA;
在 Main 之前 Application.Run 语句。
但 Application.Run 语句位于 Program.cs 中,这似乎是生成的代码,因此任何更改都可能会意外丢失。另外,我找不到在项目或主窗体属性中将当前线程设置为 STA 的方法,但也许我找错了地方。
在后台线程中调用saveFileDialog.ShowDialog() 的正确方法是什么?
【问题讨论】:
-
Program.cs 由向导创建,但从不重新生成(不像 *.Designer.cs 等,您的更改确实会丢失)。