protected override void Process(FileInfo inputFile, FileInfo outputFile)
 {
     using (Stream compressedStream = new GZipCorrectMultipartStream(inputFile.OpenRead()),
         decompressedStream = outputFile.OpenWrite())
     {
         while (compressedStream.Position < compressedStream.Length)
         {
             using (var zipStream = new GZipStream(compressedStream, CompressionMode.Decompress))
             {
                 zipStream.CopyTo(decompressedStream, _bufferSize);
             }
         }
     }
 }
 public void Read(Stream stream)
 {
     var index = 0;
     using (var compressedStream = new GZipCorrectMultipartStream(stream))
     {
         while (compressedStream.Position != compressedStream.Length)
         {
             MemoryStream memoryStream;
             using (var zipStream = new GZipStream(compressedStream, CompressionMode.Decompress))
             {
                 using (memoryStream = new MemoryStream())
                 {
                     zipStream.CopyTo(memoryStream, _bufferSize);
                 }
                 if (_queuesToWrite[index].Enqueue(memoryStream.ToArray()))
                 {
                     break;
                 }
                 index = (index + 1) % _queuesToWrite.Length;
             }
         }
     }
     Stop();
 }