我创建了一个继承自MarshalByRefObjectISponsor的对象。在我的ISponsor实现中,我只是返回一个时间跨度来指示我希望对象更新多长时间。
当我调用InitializeLifetimeService()以获取要传递给我的ILease对象的ISponsor引用时,似乎从未使用过它。
ISponsor似乎只是返回了一个时间跨度,而没有实际使用ILease引用。但我相信自从涉及远程处理之后,这里还会有更多的事情发生。
ISponsorILease如何工作,特别是在对象生命周期更新方面?

最佳答案

在父appdomain中,可以通过InitializeLifetimeServiceGetLifetimeService调用新appdomain中对象的代理实例来获取ilease对象。您永远不需要自己实现ILease(测试ISponsor实现之外)。
然后注册自定义发起对象,该对象用ISponsor调用实现ILease.Register并用超时配置ILease对象。
当使用Renewal调用您的发起对象时,您可以指定对象的生存时间,还可以调整/显示传入的ILease实例的属性。

08-19 10:28