Esempio n. 1
0
        public WorkerClient(WorkerProcess process, IWorkerServer serverProxy)
        {
            this.process = process;
            this.id      = "[client:" + process.Id + "]";

            this.serverProxy = serverProxy;
            if (this.serverProxy is MarshalByRefObject)
            {
                this.proxyLifetimeSponsor.Register((MarshalByRefObject)this.serverProxy);
            }

            this.process.ProcessDeadEvent += this.OnProcessDead;

            this.serverProxy.ServerDyingEvent   += this.OnServerDying;
            this.serverProxy.ServerReadyEvent   += this.OnServerReady;
            this.serverProxy.TaskFailedEvent    += this.OnRemoteTaskFailed;
            this.serverProxy.TaskCanceledEvent  += this.OnRemoteTaskCanceled;
            this.serverProxy.TaskSucceededEvent += this.OnRemoteTaskSucceeded;
        }
Esempio n. 2
0
        private /*protected virtual*/ void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (this.remoteProxy != null)
                {
                    this.remoteProxy.ServerDyingEvent   -= this.OnServerDying;
                    this.remoteProxy.ServerReadyEvent   -= this.OnServerReady;
                    this.remoteProxy.TaskFailedEvent    -= this.OnTaskFailed;
                    this.remoteProxy.TaskCanceledEvent  -= this.OnTaskCanceled;
                    this.remoteProxy.TaskSucceededEvent -= this.OnTaskSucceeded;

                    this.remoteProxy.Dispose();
                    this.remoteProxy = null;

                    this.proxySponsor.Close();
                }
            }

            DecrementProxyRef(disposing);
        }
Esempio n. 3
0
        private void Connect(Guid ipcguid)
        {
            if (this.remoteProxy != null)
            {
                throw new InvalidOperationException("Already connected.");
            }

            var server = (WorkerServer)RemotingServices.Connect(typeof(WorkerServer),
                                                                string.Format(CultureInfo.InvariantCulture,
                                                                              @"ipc://{0}/{1}", ipcguid, typeof(WorkerServer).FullName)
                                                                );

            this.proxySponsor.Register(server);
            this.remoteProxy = server;

            this.remoteProxy.ServerDyingEvent   += this.OnServerDying;
            this.remoteProxy.ServerReadyEvent   += this.OnServerReady;
            this.remoteProxy.TaskFailedEvent    += this.OnTaskFailed;
            this.remoteProxy.TaskCanceledEvent  += this.OnTaskCanceled;
            this.remoteProxy.TaskSucceededEvent += this.OnTaskSucceeded;
        }