我写了一段与这篇文章中的示例类似的代码: .NET Remoting callback (Pass a callback object to a remote method)。
我发现,如果我没有覆盖MarshalByRefObject.InitializeLifetimeService()
一段时间后,服务器调用回调失败。所以我重写了它以返回 null (无限生命周期)并且它可以工作。
但现在我有点担心垃圾收集器:
- 这样的对象会像往常一样被 GC 收集,还是因为它被远程而保持活动状态?
- 我找到了这个方法:
RemotingServices.Disconnect()
如果我在回调对象上调用它,它会保证生命周期策略将变得无关紧要并且将被垃圾收集吗?
如果我做得对,我想要专家意见。
谢谢,吉尔。
PS。我在 .NET 2.0 的约束下工作,因此建议切换到 WCF,虽然正确,但无关紧要。:)