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