public void Dispose()
 {
     if (!_disposed)
     {
         RawStream.Close();
         _disposed = true;
     }
 }
 protected override void Dispose(bool disposing)
 {
     if (disposing)
     {
         if (_decStream != null)
         {
             _decStream.Close();
             _decStream = null;
         }
         if (_rawStream != null)
         {
             _rawStream.Close();
             _rawStream = null;
         }
     }
     _streamsBytes = null;
 }
        public override void Close()
        {
            if (!initdone)
            {
                DoInit(); // can happen if never called write
            }

            if (closed)
            {
                return;
            }

            closed = true;
            // sigh ... no only must I close the parent stream to force a flush, but I must save a reference
            // raw stream because (apparently) Close() sets it to null (shame on you, MS developers)
            if (deflateStream is object)
            {
                deflateStream.Close();
            }
            else
            {         // second hack: empty input?
                RawStream.WriteByte(3);
                RawStream.WriteByte(0);
            }
            // add crc
            var crcv = adler32.GetValue();

            RawStream.WriteByte((byte)((crcv >> 24) & 0xFF));
            RawStream.WriteByte((byte)((crcv >> 16) & 0xFF));
            RawStream.WriteByte((byte)((crcv >> 8) & 0xFF));
            RawStream.WriteByte((byte)(crcv & 0xFF));
            if (!LeaveOpen)
            {
                RawStream.Close();
            }
        }
 public override void Close()
 {
     base.Close();
     RawStream.Close();
 }