当我关闭文档时,Visio提示我保存文档,尽管我刚刚保存了它
本文关键字:保存 文档 管我 Visio 提示 | 更新日期: 2023-09-27 18:03:34
我写了一个Visio 2010 Add-In(c#)来处理很多Visio文档。在一个丝带之内。我调用一个新线程(processVisioFiles),它在一个大循环中处理所有vsd文件(这需要40多分钟)。
public partial class Ribbon1
{
private ThisAddIn exportAddIn;
...
...
public Thread StartTheThread(DirectoryInfo startFolder, bool someVal)
{
var t = new Thread(() => exportAddIn.processVisioFiles(startFolder, false));
t.SetApartmentState(ApartmentState.STA);
t.Name = "processVisioFiles";
t.IsBackground = true;
t.Start();
return t;
}
private void button1_Click(object sender, RibbonControlEventArgs e)
{
//exportAddIn.processVisioFiles(startFolder, false);
StartTheThread(startFolder, false);
}
}
每次在我以编程方式关闭Visio vsd文档之前,我先执行document.Save()
,然后执行document.Close()
。然而,它们是许多文档(不是全部,但总是相同的),这促使我手动保存它们。
我需要说的是,我没有手动保存文档的问题当我在一个线程内开始大循环UI
private void button1_Click(object sender, RibbonControlEventArgs e)
{
exportAddIn.processVisioFiles(startFolder, false);
StartTheThread(startFolder, false);
}
,但随后Visio UI冻结("应用程序不响应"消息),并在一定时间后,Visio中止所有文件的循环。
我测试了document.SaveAs(...)
和document.SaveAsEx(…)和
if(document.Saved == false)
{
document.Save();
}
document.Close();
,但结果是一样的。每次相同的Visio文件没有保存或保持未保存时,UI都会提示用户手动保存或放弃更改。如何以编程方式保存和关闭而不提示用户手动执行此操作?
注。此外(当我处于调试模式时),我在document.Save()之后等待了一段时间,然后步骤到document.Close()行,但结果是相同的。
尝试在。save()之前添加DoEvents
System.Windows.Forms.Application.DoEvents();
document.Save()