Esempio n. 1
0
        public void Dispose()
        {
            lock (Pipes)
            {
                ListeningPipe?.Dispose();
                ListeningPipe = null;

                foreach (var p in Pipes.Values)
                {
                    p.Dispose();
                }
                Pipes.Clear();
            }
            lock (PushPipes)
            {
                ListeningPushPipe?.Dispose();
                ListeningPushPipe = null;

                foreach (var p in PushPipes)
                {
                    p.Dispose();
                }
                PushPipes.Clear();
            }
        }
Esempio n. 2
0
 protected void BeginPushPipeListen()
 {
     if (!Running)
     {
         return;
     }
     lock (PushPipes)
     {
         if (ListeningPushPipe != null)
         {
             ListeningPushPipe.Dispose(); // Shouldn't happen too
         }
         // Note: PipeDirection.InOut ensures the client can set ReadMode, IDK why but it works this way
         ListeningPushPipe = new NamedPipeServerStream(Name + PipeConnection.PUSH_SUFFIX, PipeDirection.InOut, NamedPipeServerStream.MaxAllowedServerInstances, PipeTransmissionMode.Message, PipeOptions.Asynchronous, 0, BufferSize, CreateSecurity());
         ListeningPushPipe.BeginWaitForConnection(OnPushPipeConnect, null);
     }
 }
Esempio n. 3
0
        protected void OnPushPipeConnect(IAsyncResult ar)
        {
            try
            {
                lock (PushPipes)
                {
                    if (ListeningPushPipe != null)
                    {
                        ListeningPushPipe.EndWaitForConnection(ar);
                        PushPipes.Add(ListeningPushPipe);
                        ListeningPushPipe = null;
                    }
                }
            }
            catch { }

            BeginPushPipeListen();
        }