public override void Save() { byte[] buffer = null; try { using (var targetFileStream = File.Create(TargetFilePath)) { var orderNumber = 0; while (!StatusManager.ProcessIsCanceled && StatusManager.Exception == null) { if (StatusManager.AllDecompressIsCompleted && DictionaryWritingManager.IsEmpty()) { StatusManager.SavingToFileIsCompleted = true; break; } var isSuccess = DictionaryWritingManager.TryRemove(orderNumber, out buffer); if (!isSuccess) { Thread.Sleep(ThreadTimeout); continue; } targetFileStream.Write(buffer, 0, buffer.Length); orderNumber++; } } } catch (Exception ex) { StatusManager.Exception = ex; } }
public override void Save() { var orderNumber = 0; byte[] bytesBlock = null; try { using (var targetFileStream = File.Create(TargetFilePath)) { while (!StatusManager.ProcessIsCanceled && StatusManager.Exception == null) { if (StatusManager.AllCompressIsCompleted && DictionaryWritingManager.IsEmpty()) { StatusManager.SavingToFileIsCompleted = true; break; } var isSuccess = DictionaryWritingManager.TryRemove(orderNumber, out bytesBlock); if (!isSuccess) { Thread.Sleep(ThreadTimeout); continue; } var blockLengthInBytes = BitConverter.GetBytes(bytesBlock.Length); targetFileStream.Write(blockLengthInBytes, 0, blockLengthInBytes.Length); targetFileStream.Write(bytesBlock, 0, bytesBlock.Length); orderNumber++; } } } catch (Exception ex) { StatusManager.Exception = ex; } }