Example #1
0
        public void DropConnection()
        {
            if (false == IsConnectionAccepted)
            {
                throw new InvalidOperationException("Invalid object state");
            }

            m_stopReadWriteLoops = true;
            lock (m_threadHandleLocker)
            {
                if (ReadFlag(PipeReaderState.PipeIO) && m_taskThreadHandle != Win32A.INVALID_HANDLE_PTR)
                {
                    Win32A.CancelSynchronousIo(m_taskThreadHandle);
                }
            }
        }
Example #2
0
        protected void ClosePipe()
        {
            ContinueAcceptingConnections = false;

            lock (m_threadHandleLocker)
            {
                if (ReadFlag(PipeReaderState.PipeIO) && m_taskThreadHandle != Win32A.INVALID_HANDLE_PTR)
                {
                    Win32A.CancelSynchronousIo(m_taskThreadHandle);
                }
            }

            lock (m_pipeStreamLocker)
            {
                if (m_pipeStream != null)
                {
                    m_pipeStream.Dispose();
                    m_pipeStream = null;
                }
            }

            SetFlag(PipeReaderState.ConnectionAccepted, false);
            SetFlag(PipeReaderState.PipeCreated, false);
        }