我可以挂钩远程对象的到期吗?

时间:2014-02-28 19:25:11

标签: .net remoting .net-remoting marshalbyrefobject

我有一个继承自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;
}

现在,我希望在租约到期时执行一些逻辑。到期时是否有事件或挂钩?我搜索过Google和MSDN,但我什么都没找到。

谢谢!

1 个答案:

答案 0 :(得分:2)

当租约到期时,正在对象的赞助商上调用ISponsor.Renewal方法。 因此,您可以自己实现ISponsor并将逻辑放在那里。

为此,您需要在ILease.Register的实施中调用InitializeLifetimeService方法,并将ISponsor作为参数传递。