我有一个继承自MarshalByRefObject
的类,在其中我覆盖了终身服务,给它两个小时的InitialLeaseTime
:
public override object InitializeLifetimeService()
{
// Expire after two hours.
var lease = (ILease)base.InitializeLifetimeService();
if (lease.CurrentState == LeaseState.Initial)
lease.InitialLeaseTime = TimeSpan.FromHours(2);
return lease;
}
现在,我想在租约到期时执行一些逻辑。是否有事件或挂钩到过期?我搜索了谷歌和MSDN,但我什么也没找到。
谢谢!
当租约到期时,将在对象的发起人上调用ISponsor.Renewal
方法。因此,您可以自己实现ISponsor
并将逻辑放在那里。
为此,您需要在InitializeLifetimeService
的实现中调用 ILease.Register
方法,将ISponsor
作为参数传递。