卸载 appdomain 不清除 C++ COM 对象静态成员

Unloading appdomain don't clear C++ COM object static members

我正在使用第 3 方 C++ COM 对象,它似乎包含一些静态成员。问题是我每次开始新的 运行 时都必须重置静态成员。因此,我目前需要关闭并打开我的应用程序。我尝试使用 AppDomain 卸载那些静态成员的全部内存,但我不知道为什么它不起作用。我正在使用 Activator.CreateInstance(Type.GetTypeByCLSID) 获取 COM 对象,是否需要手动执行任何操作来处理这些实例?请注意,我检查过任何静态 C# 对象都以这种方式处理。

非托管资源被称为非托管,因为它们的内存不由托管垃圾收集器

处理

必须手动处理任何非托管资源。这是 IDisposable 的目标之一(如果不是最重要的话):它的实现有一些关联的非托管资源。例如,FileStream 需要手动处理,因为它是 Win32 API 调用的包装器。

总而言之,卸载 AppDomain 或任何其他方法在这里都无济于事。您需要编写代码以在不再需要这些 COM 静态资源时处理它们(即当您关闭应用程序时)。