Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Visio在我关闭文档时提示我保存文档,尽管我刚刚保存了文档_C#_Multithreading_Add In_Office Interop_Visio - Fatal编程技术网

C# Visio在我关闭文档时提示我保存文档,尽管我刚刚保存了文档

C# Visio在我关闭文档时提示我保存文档,尽管我刚刚保存了文档,c#,multithreading,add-in,office-interop,visio,C#,Multithreading,Add In,Office Interop,Visio,我编写了一个Visio2010加载项(用C#)来处理许多Visio文档。在Ribbon1.button1\中,单击我调用的新线程(processVisioFiles)方法,该线程在一个大循环中处理所有vsd文件(需要40分钟以上) 每次以编程方式关闭Visio vsd文档之前,我都会执行document.Save(),然后执行document.close()。然而,它们有很多文档(不是全部,但总是相同的),这会提示我手动保存它们 我需要说的是,当我用UI在一个线程内启动大循环时,我没有手动保存文

我编写了一个Visio2010加载项(用C#)来处理许多Visio文档。在Ribbon1.button1\中,单击我调用的新线程(processVisioFiles)方法,该线程在一个大循环中处理所有vsd文件(需要40分钟以上)

每次以编程方式关闭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(…)保存,以及

但结果是一样的。每次相同的Visio文件未保存且未保存时,UI都会提示用户手动保存或放弃更改。 如何以编程方式保存和关闭而不提示用户手动执行此操作


p、 此外(在调试模式下),我在document.Save()之后等待了一段时间,然后转到document.Close()行,但结果是一样的

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


可能是打字错误,但
documend.Saved
?这是一个打字错误,谢谢,但不幸的是,这不起作用。我尝试的是将保存的属性设置为true:
Globals.ThisAddIn.Application.ActiveDocument.Saved=true
文档.Close()这样做有效,但我仍然不明白为什么:
document.Save()
文档.Close()不起作用
private void button1_Click(object sender, RibbonControlEventArgs e)
{                             
    exportAddIn.processVisioFiles(startFolder, false);
    StartTheThread(startFolder, false);
}
if(document.Saved == false) 
{
    document.Save(); 
} 
document.Close(); 
    System.Windows.Forms.Application.DoEvents();
    document.Save()