c# - 远程回调对象生命周期

标签 c# .net remoting .net-remoting

我写了一段类似于这篇文章中的例子的代码: .NET Remoting callback (将回调对象传递给远程方法)。

据我所知,如果我没有重写 MarshalByRefObject.InitializeLifetimeService() 一段时间后,服务器调用回调失败。 所以我重写了它以返回 null(无限生命周期)并且它起作用了。

但现在我有点担心垃圾收集:

  1. 这样的对象会像往常一样被 GC 收集,还是因为被远程处理而保持事件状态?
  2. 我找到了这个方法:RemotingServices.Disconnect()

如果我在我的回调对象上调用它,它会保证生命周期策略变得无关紧要并且会被垃圾收集吗?

如果我做对了,我需要专家意见。

谢谢, 吉尔。

附言。我在 .NET 2.0 的约束下工作,因此切换到 WCF 的建议虽然正确,但无关紧要。 :)

最佳答案

好吧,看来这个方法证明了自己。

我通过在 MarshalByRefObject.InitializeLifetimeService() 中返回 null 来使用无限租约。
然后,调用 RemotingServices.Disconnect() 允许正确释放对象。

关于c# - 远程回调对象生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11072075/

相关文章:

.net - 使用 MSBuild 签署 ClickOnce 或程序集会导致错误 MSB3321

c# - 使用 SMTP 发送电子邮件并控制发件人地址

c# - 处理 IPC 远程 channel 的安全性

c# - 异步远程调用

c# - System.Type 类和 IsPointer 属性

c# - 现有的类似于Parallel.For的LINQ扩展方法?

c# - AutoMapper 未映射...未抛出错误

c# - 使用c#创建带标题的word文档

c# - WMI 性能不佳

C# Remoting - 如何关闭 CustomErrors