[Mono-list] Garbage-collecting a remoting singleton object in a service?

Robert Jordan robertj at gmx.net
Fri Sep 1 10:05:36 EDT 2006


Andrés G. Aragoneses [ knocte ] wrote:
> I am interested in implementing a service (windows service in windows, 
> and using mono-service on linux, I suppose) that hosts a singleton 
> remoting object. As I have read on some docs, no leasing management is 
> needed if no SAO/CAO hosting method is used (returning null in 
> InitializeLifeTimeService method, as I will use a Singleton instance) 
> but, how can I garbage-collect manually this server object on the 
> OnStop() method of the service (so as to create a new instance again on 
> the OnStart method)?

To achieve this, you have to register the singleton object manually.

Throw away the <service> entry from you server's remoting config
and use this code instead (in server's code, of course):


YourServerClass singleton;

OnStart ()
{
	singleton = new YourServerClass ();
	RemotingServices.Marshal (singleton, objectUri);
}

OnStop ()
{
	RemotingServices.Disconnect (singleton);
	// do what you called "garbage-collect manually".
}


where "objectUri" is the objectUri-attribute you previously
used in server's remoting config.

Robert



More information about the Mono-list mailing list