在后台线程中调用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/

10-11 02:23