当我关闭文档时,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()行,但结果是相同的。

当我关闭文档时,Visio提示我保存文档,尽管我刚刚保存了它

尝试在。save()之前添加DoEvents

    System.Windows.Forms.Application.DoEvents();
    document.Save()