Exemplo n.º 1
0
        public override void Start()
        {
            PrepareInFileStream();
            PrepareOutFileStream();

            var writeThread = ThreadManager.GetSafeThread(WriteBlocks, ExceptionHandler);

            writeThread.StartWithPriority(ThreadPriority.BelowNormal);

            var compressThreads =
                ThreadManager.GetSafeThreads(_numReadThreads, CompressBlocks, ExceptionHandler);


            compressThreads.StartThreads(ThreadPriority.AboveNormal);

            compressThreads.WaitThreads().ContinueWithOneTime(() =>
            {
                foreach (var p in _compressedBlocksProd)
                {
                    p.Stop();
                }
            });

            writeThread.Join();

            _inFileStream.Close();
            _outFileStream.Close();

            if (_errors.Any())
            {
                OutFileInfo.Delete();
                throw _errors.Dequeue();
            }
        }
Exemplo n.º 2
0
        private void PrepareOutFileStream()
        {
            if (OutFileInfo.Extension.ToLower() != ".gz")
            {
                throw new FileExtensionException("Результирующий файл должен быть формата .gz");
            }

            _outFileStream = OutFileInfo.Open(FileMode.Create, FileAccess.Write);
        }