我正在将VB6.0 COM组件现代化为.Net COM ServicedComponent
我注意到原始VB6.0组件在RpcMgmtEnableIdleCleanup
析构函数中调用方法Class_Terminate
。 / p>
Private Sub Class_Terminate()
Call RpcMgmtEnableIdleCleanup
End Sub
我不确定在现代化过程中是否需要保留此代码,或者GC是否只是处理此代码。
基本上,我的托管代码中是否需要此功能?
Protected Overrides Sub Finalize()
Call RpcMgmtEnableIdleCleanup()
MyBase.Finalize()
End Sub
我搜索过,而且我没有找到任何具体的问题。
答案 0 :(得分:1)
看起来像伏都教编程。有人想象你在节目的开头而不是结束时这样做。
它只能打开而不能关闭。它可以在系统确定时打开或关闭。系统会在必要时将其打开。
我说这与程序无关,而是系统管理。如果它解决了某个特定版本的问题,那么原因已经很久了。
以下是帮助中的评论。
说明
注意RpcMgmtEnableIdleCleanup是OSF-DCE RPC规范的Microsoft扩展。
仅调用此功能就足够了。一旦调用,就无法关闭空闲资源清理。在某些情况下,根据Windows版本和配置,RPC运行时可能需要创建一个单独的线程才能执行此类清理,这就是为什么不会始终打开空闲资源清理的原因。在Windows XP和更高版本的Windows上,RPC Runtime被编程为在空闲资源达到特定阈值时自动打开空闲资源清理。