C#WinForms:如何设置主函数STAThreadAttribute

saveFileDialog.ShowDialog()在后台线程中调用时,出现以下异常:

必须先将当前线程设置为单线程单元(STA)模式,然后才能进行OLE调用。确保您的Main函数上已标记STAThreadAttribute。

根据此:

要解决此问题,请插入以下语句:

Threading.Thread.CurrentThread.ApartmentState = Threading.ApartmentState.STA;

在Main中,位于Application.Run语句之前。

但是Application.Run语句位于Program.cs中,它似乎是生成的代码,因此任何更改都可能会意外丢失。另外,我找不到在项目或主窗体属性中将当前线程设置为STA的方法,但是也许我在错误的位置查找。saveFileDialog.ShowDialog()在后台线程中调用的正确方法是什么?

回答:

不应从后台线程调用ShowDialog()-使用Invoke(..)。

Invoke((Action)(() => { saveFileDialog.ShowDialog() }));

以上是 C#WinForms:如何设置主函数STAThreadAttribute 的全部内容, 来源链接: utcz.com/qa/406482.html

回到顶部