c# - 为什么 C# 类库中的静态变量在从 VBA 实例化的对象中仍然存在?
问题描述
我以注册的 C# 类库的形式编写了一个插件,该类库具有 COM 公开的方法。
类中的静态对象似乎在Sub Main
. 这是为什么?我可以阻止它并完全“重新加载/重新启动”库吗?(我确实将ctrPlugin
对象设置为Nothing
)
在 VBA 中,我实例化类并从 C# 库中调用方法,如下所示:
Option Explicit
Sub Main
Dim ctrPlugin
Set ctrPlugin = CreateObject("MyLibrary.MyExposedClassName")
ctrPlugin.OpenWpfWindowMethod
Set ctrPlugin = Nothing
End If
End Sub
我遇到的问题是偶尔出现“内存不足”错误。在 c# 方法完成后,在宿主应用程序(ERP 系统)中显示。该错误在运行 ac# 方法时永远不会显示,总是在它完成之后。当我使用 C# 应用程序时,我从来没有遇到过这些问题。C# 应用程序和类库之间的对象生命周期和垃圾收集过程之间是否存在差异?
我已经在 Visual Studio 中对我的库进行了记忆分析,并消除了一些 memleaks。(其中一个是由 WPF 绑定到不是 DependencyObjects 或继承的 INotifyPropertyChanged 的对象引起的)
解决方案
推荐阅读
- bad-request - Mule#4:RAML 无法解析转义字符中的 JSON
- java - Resilience4j 异常处理
- sql - 将每一行与另一列的对应行相加
- apexcharts - 在热图顶点图中,我们如何删除重复的 x 轴标签?
- sqlite - 如何使用带有颤振的地板从资产中预填充数据库?
- amazon-web-services - Cloudformation !Ref 没有为 vpc 端点返回正确的值
- python - Python/Selenium 通过抓取网页以在 Google 表格上创建表格输出嵌套列表
- javascript - 面临 SQLite3 问题
- python-3.x - 数据以 3 位小数四舍五入
- java - 从命令行构建 Gradle 失败并出现异常“无法初始化类 org.codehaus.groovy.runtime.InvokerHelper”