【发布时间】:2011-05-06 07:22:01
【问题描述】:
我写了这段代码:
public class Message : MarshalByRefObject, IMessage
{
...
public override object InitializeLifetimeService()
{
ILease leas = (ILease) base.InitializeLifetimeService();
if (leas != null)
{
if(leas.CurrentState == LeaseState.Initial)
{
leas.InitialLeaseTime = TimeSpan.FromMilliseconds(2000);
leas.SponsorshipTimeout = TimeSpan.Zero;
leas.RenewOnCallTime = TimeSpan.Zero;
}
}
return leas;
}
}
InitializeLifetimeService 的覆盖是否允许在 2 秒后对象没有“垃圾收集”?我的意思是,不管这个实例是否被远程访问,都是独立的。
谢谢。
【问题讨论】:
-
您是在问对象是否在 2 秒后不会被 GC 处理?因为代码看起来像你想在那之后收集它。 (尽管您没有更改 10 秒投票默认值的事件)
-
是的,我希望在 2 秒后收集对象。我正在实现对等 2 对等模拟器,并且在对等之间有一条消息循环。我正在考虑分配超时,之后收集对象。我不知道这是否是最好的方法,但我没有看到解决这个问题的另一种方法。
-
我希望在 2 秒后收集对象,并且我不想更新待命时间。该代码是否保证了该行为?
标签: .net object remoting .net-remoting lifetime