在后台线程中调用saveFileDialog.ShowDialog()
时,出现以下异常:
根据this:
Threading.Thread.CurrentThread.ApartmentState = Threading.ApartmentState.STA;
但是Application.Run语句位于Program.cs中,它似乎是生成的代码,因此所有更改都可能会意外丢失。另外,我找不到在项目或主窗体属性中将当前线程设置为STA的方法,但是也许我在错误的位置查找。
在后台线程中调用
saveFileDialog.ShowDialog()
的正确方法是什么? 最佳答案
不应从后台线程调用ShowDialog()-使用Invoke(..)。
Invoke((Action)(() => { saveFileDialog.ShowDialog() }));
关于c# - C#WinForms : How to set Main function STAThreadAttribute,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6373645/