Пример #1
0
        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();
        }
Пример #2
0
        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;
        }
Пример #4
0
        /// <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
                }
            }
        }
Пример #5
0
        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);
 }