我有一个应用程序试图打开SaveFileDialog时崩溃。我搜索了答案,发现我需要把它放在一个新的线程中,这就是我所做的,但是我对STA有一个错误。所以我把线程对于正在执行的操作处于无效状态。 c#
th.SetApartmentState(ApartmentState.STA);
几个问题后,我设法使线程工作,但现在我有
主题是对操作的无效状态中执行。
这是我的线程函数:
public static void ouvrir(object name)
{
saveFileDialog1.Filter = "Microsoft Word Document (.docx)|*.docx";
saveFileDialog1.RestoreDirectory = true;
saveFileDialog1.Title = "Where to save the " + (string)name + " ? ";
DialogResult result = saveFileDialog1.ShowDialog();
oke = true;
try
{
if (result == DialogResult.OK)
{
boule = true;
ptth = saveFileDialog1.FileName;
}
}
catch (Exception exc)
{ MessageBox.Show(exc.Message); }
}
此行thows错误(我保存Word文档用互操作):
doc.SaveAs(imp);
我GOOGLE了错误,但似乎我是地球上唯一存在这个问题的人......这是我的理解,我在一个怀疑和无知的海洋中航行。
谢谢
你调用从后台线程保存对话框? – bashrc
我不这么认为,我尝试了新的线程,然后我试着用新的线程中止并且都没有工作 – UnderPaidIntern
如果您发现自己创建了一个新线程并将其设置为公寓状态,那通常表明您是从错误的地方开始。即你在编写这个代码的时候应用了哪些类型的应用?它实际上是一个Forms/WPF应用程序吗? –