static void Main() { // Register a channel. TcpChannel myChannel = new TcpChannel(); ChannelServices.RegisterChannel(myChannel); RemotingConfiguration.RegisterActivatedClientType( typeof(HelloService), "tcp://localhost:8085/"); // Get the remote object. HelloService myService = new HelloService(); // Get a sponsor for renewal of time. ClientSponsor mySponsor = new ClientSponsor(); // Register the service with sponsor. mySponsor.Register(myService); // Set renewaltime. mySponsor.RenewalTime = TimeSpan.FromMinutes(2); // Renew the lease. ILease myLease = (ILease)mySponsor.InitializeLifetimeService(); TimeSpan myTime = mySponsor.Renewal(myLease); Console.WriteLine("Renewed time in minutes is " + myTime.Minutes.ToString()); // Call the remote method. Console.WriteLine(myService.HelloMethod("World")); // Unregister the channel. mySponsor.Unregister(myService); mySponsor.Close(); }
public virtual void Dispose() { if (Sponsor != null) { if (Agent != null) { //... Sponsor.Unregister(Agent); } Sponsor.Close(); Sponsor = null; } if (!isUnloaded) Unload(false).GetAwaiter().GetResult(); }
protected void UnregisterRemoteObject() { try { if (m_sponsor != null) { m_sponsor.Unregister(m_mbr); } } catch { } m_sponsor = null; m_mbr = null; }
/// <summary> /// Dispose of the AppDomainWorker object. /// </summary> public void Dispose() { MarshalByRefObject currentWorker = this.worker as MarshalByRefObject; if (currentWorker != null) { try { sponsor.Unregister(currentWorker); } catch { // Ignored } } IDisposable disposableWorker = this.worker as IDisposable; if (disposableWorker != null) { try { disposableWorker.Dispose(); } catch { // Ignored } } this.worker = default(T); if (this.applicationDomain != null) { try { AppDomain.Unload(this.applicationDomain); this.applicationDomain = null; } catch { // Ignored } } }
public void Stop() { lock (_lock) { if (serverManager != null) { try { clientSponsor.Unregister(serverManager as MarshalByRefObject); Logging.Log.Info("Closing client sponsor"); clientSponsor.Close(); Logging.Log.Info("Stopping server manager"); serverManager.Stop(); Logging.Log.Info("Unloading AssemblyLoader from server app domain"); AssemblyLoader.Unload(serverDomain); } catch (Exception ex) { Logging.Log.Warn("Error during shutdown", ex); throw; } } else { Logging.Log.Error("Tried unloading an already unloaded server manager."); } clientSponsor = null; serverManager = null; if (serverDomain != null) { Logging.Log.Info("Unloading server app domain"); AppDomain.Unload(serverDomain); } else { Logging.Log.Warn("Server app domain already vanished."); } serverDomain = null; } }
public void OnCompleted(Action action) { var sponsor = new ClientSponsor(); Callback cb = null; cb = new Callback(() => { try { action(); } finally { sponsor.Unregister(cb); } }); sponsor.Register(cb); OnCompletedCore(cb.Invoke); }
public void UnregisterLease(IExtensionObject eo) { _clientSponsor.Unregister((MarshalByRefObject)(object)eo); }