我创建了一个继承自MarshalByRefObject
和ISponsor
的对象。在我的ISponsor
实现中,我只是返回一个时间跨度来指示我希望对象更新多长时间。
当我调用InitializeLifetimeService()
以获取要传递给我的ILease
对象的ISponsor
引用时,似乎从未使用过它。ISponsor
似乎只是返回了一个时间跨度,而没有实际使用ILease
引用。但我相信自从涉及远程处理之后,这里还会有更多的事情发生。ISponsor
和ILease
如何工作,特别是在对象生命周期更新方面?
最佳答案
在父appdomain中,可以通过InitializeLifetimeService
或GetLifetimeService
调用新appdomain中对象的代理实例来获取ilease对象。您永远不需要自己实现ILease
(测试ISponsor
实现之外)。
然后注册自定义发起对象,该对象用ISponsor
调用实现ILease.Register
并用超时配置ILease
对象。
当使用Renewal
调用您的发起对象时,您可以指定对象的生存时间,还可以调整/显示传入的ILease
实例的属性。