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); } } }
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); }