gpt4 book ai didi

c# - 尽管我刚刚保存了文档,但Visio提示我保存文档时要保存它

转载 作者:行者123 更新时间:2023-12-03 13:13:08 25 4
gpt4 key购买 nike

我编写了一个Visio 2010外接程序(用C#语言编写),该外接程序处理许多Visio文档。在Ribbon1.button1_Click中,我调用一个新线程(processVisioFiles),该线程以大循环(超过40分钟)处理所有vsd文件。

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都会提示用户手动保存或放弃所做的更改。
如何以编程方式保存和关闭而不提示用户手动执行此操作?

p.s.此外(当我处于 Debug模式时)我在document.Save()之后等待了一段时间,然后步进到document.Close()行,但是结果是相同的。

最佳答案

尝试在.Save()之前添加DoEvents

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

关于c# - 尽管我刚刚保存了文档,但Visio提示我保存文档时要保存它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15344463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com