private void Dispose(bool disposing)
 {
     if (!this.disposed)
     {
         PipeConnection.Dispose();
         if (PipeThread != null)
         {
             try {
                 PipeThread.Abort();
             }
             catch (System.Threading.ThreadAbortException) { }
             catch (System.Threading.ThreadStateException) { }
             catch (Exception) {
                 // Log exception
             }
         }
     }
     disposed = true;
 }