为什么在Visual Studio 2010中执行Excel互操作代码时调试速度非常慢



为了将其扼杀在萌芽状态,我发布了这个问题和解决方法。我想接受一个实际定量描述问题的答案。

我使用VS2010和VB.NET进行了一些办公室编程。我发现在VBA上使用VB.NET可以为办公室自动化任务提供更好的用户体验。但是,在调试Excel COM互操作代码时,VB.NET IDE有时(并非总是如此)会陷入停顿,例如将字符串设置为等于单元格值需要5分钟,或者仅删除和添加断点就需要几分钟。一段时间以来,这一直是我生存的祸根,因为我必须重新启动电脑才能修复它,但我终于找到了原因和解决方法。当我在COM服务器之外打开了多个其他Excel实例时,就会发生这种情况。我知道Excel通常只打开一个Excel.EXE,但是,我有注册表设置,每个Excel文档都会在一个新的实例中打开,这样我就可以在不同的监视器上查看不同的文档。我认为这并不罕见。因此,当我打开Excels,我的应用程序启动ExcelCOM服务器并进入调试器时,这就是问题发生的时候,但也只有当我在启动COM服务器后单击或以某种方式在Excels中操作时。然后,COM服务器就好像被一袋Skittles中的变色龙弄糊涂了,在我重新启动计算机之前,它无法从中取出。那么,有没有人有足够的调试、COM和Interop专业知识来告诉我是什么导致了这种调试地狱?还有一种先发制人的方法吗?

为了在不重新启动的情况下解决这个问题,我发现我可以结束EXCEL.EXE的所有实例,甚至COM服务器,并关闭IDE,然后在没有文档的情况下直接重新打开EXCEL并关闭它。现在,重新打开IDE,运行代码,开始调试,步进延迟不存在或可以忽略不计。

最新更新