我有一个远程处理类作为单例
<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>它是在“服务器”服务中创建的。另一个客户端服务使用此远程对象。客户端使用计时器(轮询)每.5秒调用远程对象(用于测试)
如果服务器服务停止,因此远程对象不可用,则客户端服务的内存使用量将持续增加......
我重写了InitialLifetimeService以返回null
public override Object InitializeLifetimeService()
{
return null;
}如果远程对象不可用,.net是否会对此对象的所有调用请求进行排队?直到所有的内存都用完?如果远程对象不可用,如何检测并停止尝试调用远程方法?
发布于 2010-04-18 21:34:12
.NET Remoting不会对远程对象的调用进行排队。当一个远程对象不再可用时,当你在它上面调用一个方法时,你应该会收到一个异常(WebException,RemotingException),没有找到所请求的服务。
我觉得你的问题出在别的地方。也许你忽略了代码中可能的异常,并且没有正确地处理它。
您是再次使用相同的计时器调用远程对象,还是每隔.5秒创建一个新的计时器来调用远程对象?
https://stackoverflow.com/questions/2662314
复制相似问题