我可以挂接到远程处理对象的过期时间吗?



我有一个继承自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作为参数传递。

最新更新