我有一个继承自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,但我什么都没找到。
谢谢!
答案 0 :(得分:2)
当租约到期时,正在对象的赞助商上调用ISponsor.Renewal
方法。
因此,您可以自己实现ISponsor
并将逻辑放在那里。
为此,您需要在ILease.Register
的实施中调用InitializeLifetimeService
方法,并将ISponsor
作为参数传递。