Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I've created a object that inherits from MarshalByRefObject and ISponsor. In my implementation of ISponsor I just return a timespan to indicate how long I want the object renewed for.

When I call InitializeLifetimeService() to get an ILease reference to be passed into my ISponsor object it never appears to be used from examples I've seen.

ISponsor just seems to return a TimeSpan without actually using the ILease reference. But I'm sure there is more going on here since remoting is involved.

How do ISponsor and ILease work, specifically in terms of object lifetime renewal?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
310 views
Welcome To Ask or Share your Answers For Others

1 Answer

In a client app where you want to extend the lease of a remote object you would typically obtain an ILease interface for the object by calling

ILease lease = (ILease)RemotingServices.GetLifetimeService( remoteObject );

and then pass it your custom sponsor object

lease.Register( customSponsor );

where your custom sponsor class will look something like this:

private class CustomSponsor : MarshalByRefObject, ISponsor
{
    public TimeSpan Renewal(ILease lease)
    {
        Debug.Assert(lease.CurrentState == LeaseState.Active);
        //Renew lease by 5 minutes

        return TimeSpan.FromMinutes(5);
    }
}

For more information check out this helpful MSDN article on leasing and sponsorship. http://msdn.microsoft.com/en-us/magazine/cc300474.aspx

The link no longer works - it was in the December 2003 issue though which can be downloaded in CHM format from the same page.

A wayback machine link is here:

https://web.archive.org/web/20080906214332/http://msdn.microsoft.com/en-us/magazine/cc300474.aspx


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...