在托管代码中RpcMgmtEnableIdleCleanup的正确用法是什么?

时间:2015-01-14 18:03:32

标签: vb.net vb6 destructor vb6-migration

我正在将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

我搜索过,而且我没有找到任何具体的问题。

1 个答案:

答案 0 :(得分:1)

看起来像伏都教编程。有人想象你在节目的开头而不是结束时这样做。

它只能打开而不能关闭。它可以在系统确定时打开或关闭。系统会在必要时将其打开。

我说这与程序无关,而是系统管理。如果它解决了某个特定版本的问题,那么原因已经很久了。

以下是帮助中的评论。

  

说明

     

注意RpcMgmtEnableIdleCleanup是OSF-DCE RPC规范的Microsoft扩展。

     

仅调用此功能就足够了。一旦调用,就无法关闭空闲资源清理。在某些情况下,根据Windows版本和配置,RPC运行时可能需要创建一个单独的线程才能执行此类清理,这就是为什么不会始终打开空闲资源清理的原因。在Windows XP和更高版本的Windows上,RPC Runtime被编程为在空闲资源达到特定阈值时自动打开空闲资源清理。