我有一个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队列对此对象的所有调用请求???直到消耗掉所有内存? 如果远程对象不可用,我如何设置并停止尝试调用远程方法?
答案 0 :(得分:3)
.NET Remoting不会将对远程对象的调用排入队列。当远程对象不再可用并且您在其上调用方法时,您应该收到异常(WebException,RemotingException),找不到所请求的服务。
我认为你的问题出在其他地方。也许您忽略了代码中可能的异常,并且没有正确处理它。
您是否再次使用相同的计时器来调用远程对象,或者每隔0.5秒创建一个新计时器来调用远程对象?