I've wrote a piece of code similar to the example in this post: .NET Remoting callback (Pass a callback object to a remote method).
As I found out, if I didn't override MarshalByRefObject.InitializeLifetimeService()
After a while, the server failed calling the callback.
So I overriden it to return null (infinite lifetime) and it works.
But now I'm a bit worried about garbage collecton:
RemotingServices.Disconnect()If I call it on my callback object, will it guarantee that the lifetime policy will become irrelevant and it will be garbage collected?
I wanted an expert opinion if I'm doing it right.
Thanks, Gil.
PS. I'm working under the constraints of .NET 2.0, so recommendations to switch to WCF, while correct, are irrelevant. :)
Ok, it seems that the approach proved itself.
I used an unlimited lease by returning null in MarshalByRefObject.InitializeLifetimeService().
Then, calling RemotingServices.Disconnect() allowed the object to be released properly.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With