Ejemplo n.º 1
0
        protected override void WorkInternal(MultiThreadWorkerParameters parameters)
        {
            SetBlocksAmount(parameters.InputFileInfo);
            InitializeBuffer();
            var threads = GetThreads(RunCompression);

            try
            {
                using (var outputArchiveFileStream = parameters.OutputFileInfo.OpenWrite())
                {
                    WriteOriginalFileSize(parameters.InputFileInfo, outputArchiveFileStream);

                    foreach (var thread in threads)
                    {
                        thread.Start(new RunCompressionParameters
                        {
                            InputFileInfo    = parameters.InputFileInfo,
                            OutputFileStream = outputArchiveFileStream
                        });
                    }

                    foreach (var thread in threads)
                    {
                        thread.Join();
                    }
                }
            }
            catch (UnauthorizedAccessException)
            {
                throw new GZipTestPublicException($"{parameters.OutputFileInfo.FullName}: can not get access to file");
            }
        }
        protected override void WorkInternal(MultiThreadWorkerParameters parameters)
        {
            try
            {
                using (var inputArchiveFileStream = parameters.InputFileInfo.OpenRead())
                {
                    try
                    {
                        using (var outputFileStream = parameters.OutputFileInfo.OpenWrite())
                        {
                            SetOutputFileSize(inputArchiveFileStream, outputFileStream);

                            var threads = GetThreads(RunDecompression);

                            foreach (var thread in threads)
                            {
                                thread.Start(new RunDecompressionParameters
                                {
                                    InputFileStream  = inputArchiveFileStream,
                                    OutputFileStream = outputFileStream
                                });
                            }

                            foreach (var thread in threads)
                            {
                                thread.Join();
                            }
                        }
                    }
                    catch (UnauthorizedAccessException)
                    {
                        throw new GZipTestPublicException($"{parameters.OutputFileInfo.FullName}: can not get access to file");
                    }
                }
            }
            catch (UnauthorizedAccessException)
            {
                throw new GZipTestPublicException($"{parameters.InputFileInfo.FullName}: can not get access to file");
            }
        }