打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VSTO关闭文档再打开,不加载插件问题

 问题分析:

这种现象一般是还有代码在执行,或者资源未回收。

检查关闭文档之后是否还有多线程或者代码还在执行,发现并没有。

那么很可能是资源未及时回收导致的,因为C#有自动回收机制,一般不用担心这个问题。但我在插件中有部分代码是调用COM相关和API这些的东西,若这些有残留资源在内存中,不会自动及时释放,会导致这个问题。

解决问题:

解决方法当然是找到会处理回收资源的地方,做回收处理。

不过这样处理有难度,因为有些代码不确定是否需要回收处理,而且很难定位到具体位置。再者,若针对每个类都写析构方法也很麻烦。

C#已经为我们提供了全部回收资源的处理。可以在插件关闭的事件执行该操作,打开ThisAddin.cs,添加引用:

using System.Runtime.InteropServices;
再找到ThisAddin的Shutdown事件,添加如下代码:
  1. private void ThisAddIn_Shutdown(object sender, System.EventArgs e)

  2. {

  3. //强制回收资源

  4. //有时关闭Excel文件,都残留Excel.exe空进程。导致下次打开Excel文件,没有加载插件

  5. //有时才会,不是每次都会,说明有时可以回收资源,有时回收不了

  6. try

  7. {

  8. GC.Collect();

  9. Marshal.FinalReleaseComObject(Globals.ThisAddIn.Application);

  10. GC.Collect();

  11. }

  12. catch { }

  13. }

同样,Word、PPT插件开发时,也可以添加上面的代码。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
VSTO之旅系列(二):创建Excel解决方案
在VSTO项目中使用Excel的撤销功能(一)
Angular SSR 应用启动时的一些保护措施
Excel及WPS插件开发 VSTO极速入门
Excel 文档执行完后删除自己
C# Winform应用程序占用内存较大解决方法整理
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服