Beispiel #1
0
        protected void Started(object sender, FileNameEventArgs e)
        {
            m_curFileStr = e.FileName;

            if (m_status == JobStatus.Canceled)
            {
                e.Cancel = true;
                ErrorList.Add(new ErrorItem(Resources.JobCanceledUser, this));
            }

            while (m_status == JobStatus.Paused)
            {
                m_stopWatch.Stop();
                Thread.Sleep(100);
            }
            m_stopWatch.Start();
        }
Beispiel #2
0
        public SevenZipWrapper(string archiveName, bool decompressor)
        {
            var rootDir = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
            // check for IntPtr.Size == 8 does not work here, as we are in a 32 bit process, IntPtr.Size is always 4
            var libraryPath = Path.Combine(rootDir, "rsc", m_is64Bit ? "64" : "32", "7z.dll");

            if (decompressor)
            {
                m_fileNameCallback = value =>
                {
                    var fPath = Path.GetFileName(value);
                    if (FileExtractionStarted == null)
                    {
                        return;
                    }

                    var ev = new FileNameEventArgs(fPath, (byte)m_progress);
                    FileExtractionStarted(this, ev);
                    if (ev.Cancel)
                    {
                        Cancel(false);
                    }
                };
                m_progressCallback = value =>
                {
                    m_progress = value;
                    if (Extracting != null)
                    {
                        Extracting(this, new ProgressEventArgs((byte)m_progress, (byte)(100 - m_progress)));
                    }
                };
                m_totalSizeCallback = value =>
                {
                    m_totalSize = value;
                };
                m_processedSizeCallback = value =>
                {
                    m_processedSize = value;
                };

                if (m_is64Bit)
                {
                    m_libHandle = InitDecompressLibrary64(libraryPath, archiveName, m_progressCallback, m_fileNameCallback,
                                                          m_totalSizeCallback, m_processedSizeCallback);
                }
                else
                {
                    m_libHandle = InitDecompressLibrary32(libraryPath, archiveName, m_progressCallback, m_fileNameCallback,
                                                          m_totalSizeCallback, m_processedSizeCallback);
                }
            }
            else
            {
                m_fileNameCallback = value =>
                {
                    var fPath = Path.GetFileName(value);
                    if (FileCompressionStarted == null)
                    {
                        return;
                    }

                    var ev = new FileNameEventArgs(fPath, (byte)m_progress);
                    FileCompressionStarted(this, ev);
                    if (ev.Cancel)
                    {
                        Cancel(false);
                    }
                };
                m_progressCallback = value =>
                {
                    m_progress = value;
                    if (Compressing != null)
                    {
                        Compressing(this, new ProgressEventArgs((byte)m_progress, (byte)(100 - m_progress)));
                    }
                };
                m_totalSizeCallback = value =>
                {
                    m_totalSize = value;
                };
                m_processedSizeCallback = value =>
                {
                    m_processedSize = value;
                };

                if (m_is64Bit)
                {
                    m_libHandle = InitCompressLibrary64(libraryPath, archiveName, m_progressCallback, m_fileNameCallback,
                                                        m_totalSizeCallback, m_processedSizeCallback);
                }
                else
                {
                    m_libHandle = InitCompressLibrary32(libraryPath, archiveName, m_progressCallback, m_fileNameCallback,
                                                        m_totalSizeCallback, m_processedSizeCallback);
                }
            }
        }