Word Interop突然花了很长时间才退出Word



突然呼叫:

((Microsoft.Office.Interop.Word._Application)word).Quit(SaveChanges: Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges, OriginalFormat: Type.Missing);

耗时永远(30-60秒(,而不是最长3秒。当我用它创建pdf时不会发生这种情况,但当我创建docx时。我还没有试过所有不同的选择。。。

这可能与最近新版本的Windows有关。当我看到有人在不到两个月前更新了一篇关于interop这个词的旧帖子时,我产生了这种怀疑:链接参见:"编辑于2019-09-29"他们在里面写的那些东西我都没试过。主要是因为我不理解它,而且它以前没有必要。

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

有趣的是,当我用一个空文档正常打开单词,然后再次关闭它时,我也遇到了同样的问题。窗口关闭了,但任务管理器的文字处理花了很长时间才关闭,所以ofc让我产生了怀疑。然后我试着玩单词设置,当我关闭"当这个应用程序启动时显示开始sceen"时,它开始立即关闭这个过程。Ofc I随后表示:"很好,问题解决了",但没有。使用interop时仍然是同样的问题。我试图通过添加以下行来模拟"显示开始屏幕"的关闭:单词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%以上!我的电脑不是全新的,但它可以很好地运行CS GO,所以我真的认为这应该是足够的机器功率:(。

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

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

经过一些测试,打开了几个文档,突然又花了更长的时间。显然它自动让我再次登录。在再次注销后,它再次解决了问题,所以我确信。Ofc我不想在我的个人电脑上永远注销,然后我再次手动登录,是的,这需要更长的时间,但这次没有那么长。也许3-4秒。还是要好于20-30。这似乎是在Onedrive在"互联服务"下启动并运行时发生的。

最新更新