C# Word互操作突然花了很长时间才退出Word

C# Word互操作突然花了很长时间才退出Word,c#,ms-word,interop,exit,C#,Ms Word,Interop,Exit,突然呼叫: ((Microsoft.Office.Interop.Word._Application)word).Quit(SaveChanges: Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges, OriginalFormat: Type.Missing); 需要永远(30-60秒),而不是最多3秒。 当我使用它创建pdf时,它不会发生,但是当我创建docx时。我还没有尝试过所有不同的选择 这可能与最近新版本的Wi

突然呼叫:

((Microsoft.Office.Interop.Word._Application)word).Quit(SaveChanges: Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges, OriginalFormat: Type.Missing);
需要永远(30-60秒),而不是最多3秒。 当我使用它创建pdf时,它不会发生,但是当我创建docx时。我还没有尝试过所有不同的选择

这可能与最近新版本的Windows有关。当我看到有人在不到两个月前更新了一篇关于“互操作”一词的旧帖子时,我更加怀疑: 参见:“2019-09-29年编辑” 我没有试过他们写的那些东西。主要是因为我不懂,以前也不需要

对我来说,问题出在两台windows 10机器上。我的桌面在一周前被更新到1903年,所以可能就是这样。它在运行word 2016的windows服务器上仍然可以正常工作。 我的桌面运行word 365,但我朋友的surface pro 3也是如此,他没有这个问题。我不知道他最近是否更新了windows10

有趣的是,当我正常地用一个空文档打开word,然后再次关闭它时,我也遇到了同样的问题。窗口关闭了,但是任务管理器word进程花了很长时间才关闭,所以ofc让我怀疑。然后,我尝试使用单词设置,当我关闭“当这个应用程序启动时显示启动屏幕”时,它立即开始关闭进程。 OFCI当时认为:“很好,问题解决了”,但不是。使用互操作时仍然存在同样的问题。我试图通过添加以下行来模拟关闭“显示开始屏幕”: word.ShowStartupDialog=false; 这只是抛出了一个期望,告诉我当没有打开窗口时ShowStartupDialog不可用。这可能是因为我在不可见模式下运行word

我最终解决了这个问题,将退出代码放在如下线程中,最后:

System.Threading.Thread t = new System.Threading.Thread(() =>
{               
    ((Microsoft.Office.Interop.Word._Application)word).Quit(SaveChanges: 
    Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges, OriginalFormat: Type.Missing);             
});

t.IsBackground = true;
t.Start();
然后我可以继续在程序中工作,甚至再次调用相同的函数来创建另一个文档。然后,当旧进程仍在关闭时,它将启动另一个进程。我只是试着同时关闭3个,这对我来说已经足够了。此外,每个实例占用相当多的cpu 25%+!我的电脑不是SUUUPER新的,但它可以运行CS GO,所以我真的认为这应该是足够的机器功率:)


请帮助我找到这个问题的实际原因和解决方案,这样我就可以回到我的原始代码,它已经运行了4年。

事实证明,这个问题与互操作无关,所以我不必更改任何代码。如果我在word中打开任何docx文件(本地或非本地),然后再次关闭它,则需要很长时间才能关闭Microsoft word(32位)进程。如果我在Word中打开左角的Account选项卡并注销我的帐户。问题消失了。。。天哪,我考虑了一整天都这么做,但不,就是这样。DOH。对不起,伙计们


在一些测试之后,通过打开几个文档,突然又开始花费更长的时间。很明显,它自动让我再次登录。在另一次注销后,它再次修复了问题,因此我确信。Ofc我不想永远在我的个人电脑上注销,然后我再次手动登录,是的,这需要更长的时间,但这次不会太长。大概3-4秒。还是比20-30强。似乎只要Onedrive在“连接服务”下启动并运行,问题就出现了。

事实证明,问题与互操作无关,因此我不必更改任何代码。如果我在word中打开任何docx文件(本地或非本地),然后再次关闭它,则需要很长时间才能关闭Microsoft word(32位)进程。如果我在Word中打开左角的Account选项卡并注销我的帐户。问题消失了。。。天哪,我考虑了一整天都这么做,但不,就是这样。DOH。对不起,伙计们


在一些测试之后,通过打开几个文档,突然又开始花费更长的时间。很明显,它自动让我再次登录。在另一次注销后,它再次修复了问题,因此我确信。Ofc我不想永远在我的个人电脑上注销,然后我再次手动登录,是的,这需要更长的时间,但这次不会太长。大概3-4秒。还是比20-30强。Onedrive似乎是在“连接服务”下启动并运行的。

此文档位于哪里而不是最长3秒?office COM interop至少已经十年了,无法在今天继续使用。您是否有可能将此案例限制为仅接受新格式(.docx)?
office COM interop至少已经十年了,现在还不能使用了
基于什么事实,您为什么不能使用它?老实说,我经常使用它,没有任何问题;基于较轻的工作量。是的,还有其他库,但如果当前的开发正在阻止此时使用其他库呢?Quit()只能启动关机,但Word无法在仍然存在实时互操作接口引用的情况下退出。加快这一过程需要GC.Collect()。了解重要细节。理想情况下,您根本不必这样做,只需使用一个Word实例即可完成所有操作,并在完成任务后让程序退出。显示退出将关闭Word,即使COM引用仍然存在(将其复制并粘贴到本地.NET Framework控制台应用程序中以运行它)。这与我使用Word的经验是一致的(Excel的作用不同)。此文档位于哪里而不是最多3秒?office COM interop至少有十年的历史了,现在还不能继续使用。您是否有可能将此案例限制为仅接受新格式(.docx)?
office COM interop至少已经十年了,现在还不能使用了
基于什么事实,您为什么不能使用它?老实说,我经常使用它,没有任何问题;基于较轻的工作量。是的,还有其他库,但是如果curren