.NET Remoting内存泄漏?

时间:2010-04-18 13:02:57

标签: c# .net remoting .net-remoting

我有一个Remoting Class作为Singleton

<configuration>
   <system.runtime.remoting>
      <application>
         <service>
            <wellknown 
               mode="Singleton" 
               type="PTSSLinkClasses.PTSSLinkClientDesktopRemotable, PTSSLinkClasses" 
               objectUri="PTSSLinkDesktop" />
         </service>
         <channels>
            <channel ref="http" port="8901"/>
         </channels>
      </application>
   </system.runtime.remoting>
</configuration>

它在“服务器”服务中创建。 另一个客户端服务使用此远程对象。 客户端使用计时器(轮询)(用于测试)每隔0.5秒调用远程对象

如果服务器服务停止,那么远程对象不可用,客户端服务的内存使用量不断增加......

我已经覆盖了InitialLifetimeService以返回null

public override Object InitializeLifetimeService()
        {
            return null;
        }

如果远程对象不可用.net队列对此对象的所有调用请求???直到消耗掉所有内存? 如果远程对象不可用,我如何设置并停止尝试调用远程方法?

1 个答案:

答案 0 :(得分:3)

.NET Remoting不会将对远程对象的调用排入队列。当远程对象不再可用并且您在其上调用方法时,您应该收到异常(WebException,RemotingException),找不到所请求的服务。

我认为你的问题出在其他地方。也许您忽略了代码中可能的异常,并且没有正确处理它。

您是否再次使用相同的计时器来调用远程对象,或者每隔0.5秒创建一个新计时器来调用远程对象?