开发者

.NET Remoting object Lifetime

开发者 https://www.devze.com 2023-03-04 14:07 出处:网络
I wrote this code: public class Message : MarshalByRefObject, IMessage { ... public override object InitializeLifetimeService()

I wrote this code:

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;
    }
}

Does the override of InitializeLifet开发者_Python百科imeService grantee that after 2 seconds the object is no "garbage collected"? I mean, independently if this instance was remotely accessed or not.

Thank you.


To make sure the object lease ends you only need to set the life time service's poll interval to something lower than the 2 seconds you set as a life time.

you can do this in the server object`s constructor:

// just a sample value of 1 second
LifetimeServices.LeaseManagerPollTime = TimeSpan.FromSeconds(1); 

now even if you call mehods on the object , it will still be collected, because you set the:

leas.RenewOnCallTime = TimeSpan.Zero
0

精彩评论

暂无评论...
验证码 换一张
取 消