コード例 #1
0
        /// <summary>
        /// Автокорректировка списка файлов
        /// </summary>
        /// <param name="AutoCorrectProcessingMode">Режим обработки книг: обработка одной книги или пакетный режим</param>
        /// <param name="bw">Экземпляр класса BackgroundWorker по ссылке</param>
        /// <param name="e">Экземпляр класса DoWorkEventArgs по ссылке</param>
        /// <param name="NotWorkingFilesList">Список необработанных книг</param>
        /// <param name="WorkingFilesList">Список обработанных книг</param>
        /// <param name="IsReNew">Признак возобновления из файла корректировки</param>
        private void autoCorrect(BooksAutoCorrectProcessingModeEnum AutoCorrectProcessingMode,
                                 ref BackgroundWorker bw, ref DoWorkEventArgs e,
                                 ref List <string> NotWorkingFilesList, ref List <string> WorkingFilesList,
                                 bool IsReNew = false)
        {
            this.Text = string.Format("Автокорректировка {0} книг в {1} каталогах", m_AllFiles, m_AllDirs);
            if (IsReNew)
            {
                this.Text += string.Format(" / Для обработки {0} файлов", m_NotWorkingFilesList.Count);
            }

            string Title = this.Text;

            ProgressBar.Maximum = NotWorkingFilesList.Count;
            ProgressBar.Value   = 0;

            int i = 0;

            foreach (string file in NotWorkingFilesList)
            {
                if (bw.CancellationPending)
                {
                    // удаление обработанные книги (файлы) из списка всех файлов
                    removeFinishedFilesInFilesList(ref NotWorkingFilesList, ref m_WorkingFilesList);
                    e.Cancel = true;
                    return;
                }
                // обработка файла
                this.Text = string.Format("{0} : {1} / {2}", Title, i + 1, NotWorkingFilesList.Count);
                DateTime dtStart = DateTime.Now;
                StatusTextBox.Text += string.Format(@"{0}  =>  ( {1} )  =>", file, getFileLength(file));
                WorksWithBooks.autoCorrect(AutoCorrectProcessingMode, file, m_sharpZipLib, m_fv2Validator);
                // повторная проверка откорректированной книги на валидность
                if (checkBoxValidate.Checked)
                {
                    bool IsValid = string.IsNullOrWhiteSpace(m_fv2Validator.ValidatingFB2File(file));
                    StatusTextBox.Text += string.Format("  {0}  |", IsValid ? "Валидный" : "Невалидный");
                }

                DateTime dtEnd = DateTime.Now;
                string   sTime = dtEnd.Subtract(dtStart).ToString();
                try {
                    sTime = sTime.Substring(0, 11);
                } catch (Exception ex) {
                    Debug.DebugMessage(
                        file, ex, "Автокорректировка списка файлов: AutoCorrector.AutoCorrectorForm.autoCorrect(): Получение времени конца обработки файла."
                        );
                }
                sTime += " (ч:м:с.мс)";
                StatusTextBox.Text += string.Format("  {0}", sTime) + "\r\n";

                // обработанные файлы
                m_WorkingFilesList.Add(NotWorkingFilesList[i]);
                m_bw.ReportProgress(++i);
                ProgressBar.Update();
            }
            // удаление из списка всех файлов обработанные книги (файлы)
            removeFinishedFilesInFilesList(ref NotWorkingFilesList, ref WorkingFilesList);
        }
コード例 #2
0
        // Обработка файлов
        private void bw_DoWork(object sender, DoWorkEventArgs e)
        {
            ProgressBar.Value = 0;
            int          i            = 0;
            FB2Validator fv2Validator = new FB2Validator();

            switch (m_WorkMode)
            {
            case BooksAutoCorrectModeEnum.SelectedBooks:
                this.Text = string.Format(
                    "Автокорректировка выделенных {0} книг", m_listViewFB2Files.SelectedItems.Count
                    );

                // при пакетной обработке (не прерывать обработку на вылете корректировки, а переходим к обработке следующей книги)
                BooksAutoCorrectProcessingModeEnum AutoCorrectProcessingMode =
                    (m_listViewFB2Files.SelectedItems.Count == 1)
                                                ? BooksAutoCorrectProcessingModeEnum.OneBookProcessing
                                                : BooksAutoCorrectProcessingModeEnum.BatchProcessing;
                foreach (ListViewItem SelectedItem in m_listViewFB2Files.SelectedItems)
                {
                    if ((m_bw.CancellationPending))
                    {
                        e.Cancel = true;
                        return;
                    }
                    // обработка файла
                    WorksWithBooks.autoCorrect(
                        AutoCorrectProcessingMode, SelectedItem, SelectedItem.Text, m_sharpZipLib, m_fv2Validator
                        );
                    m_bw.ReportProgress(++i);
                    ProgressBar.Update();
                }
                break;

            case BooksAutoCorrectModeEnum.CheckedBooks:
                this.Text = string.Format("Автокорректировка помеченных {0} книг", m_listViewFB2Files.CheckedItems.Count);
                // при пакетной обработке (не прерывать обработку на вылете корректировки, а переходим к обработке следующей книги)
                AutoCorrectProcessingMode = (m_listViewFB2Files.CheckedItems.Count == 1)
                                                ? BooksAutoCorrectProcessingModeEnum.OneBookProcessing
                                                : BooksAutoCorrectProcessingModeEnum.BatchProcessing;

                foreach (ListViewItem CheckedItem in m_listViewFB2Files.CheckedItems)
                {
                    if ((m_bw.CancellationPending))
                    {
                        e.Cancel = true;
                        return;
                    }
                    // обработка файла
                    WorksWithBooks.autoCorrect(
                        AutoCorrectProcessingMode, CheckedItem, CheckedItem.Text, m_sharpZipLib, m_fv2Validator
                        );
                    m_bw.ReportProgress(++i);
                }
                break;

            case BooksAutoCorrectModeEnum.BooksInGroup:
                this.Text = string.Format("Автокорректировка {0} книг в Группе", m_listViewFB2Files.SelectedItems[0].Group.Items.Count);
                foreach (ListViewItem Item in m_listViewFB2Files.SelectedItems[0].Group.Items)
                {
                    if ((m_bw.CancellationPending))
                    {
                        e.Cancel = true;
                        return;
                    }
                    // обработка файла
                    WorksWithBooks.autoCorrect(
                        BooksAutoCorrectProcessingModeEnum.BatchProcessing, Item, Item.Text, m_sharpZipLib, m_fv2Validator
                        );
                    m_bw.ReportProgress(++i);
                    ProgressBar.Update();
                }
                break;

            case BooksAutoCorrectModeEnum.BooksInAllGroup:
                this.Text = string.Format("Автокорректировка {0} книг во всех Группах", m_listViewFB2Files.Items.Count);
                foreach (ListViewItem Item in m_listViewFB2Files.Items)
                {
                    if ((m_bw.CancellationPending))
                    {
                        e.Cancel = true;
                        return;
                    }
                    // обработка файла
                    WorksWithBooks.autoCorrect(
                        BooksAutoCorrectProcessingModeEnum.BatchProcessing, Item, Item.Text, m_sharpZipLib, m_fv2Validator
                        );
                    m_bw.ReportProgress(++i);
                    ProgressBar.Update();
                }
                break;

            default:
                return;
            }

            if ((m_bw.CancellationPending))
            {
                e.Cancel = true;
                return;
            }
        }
コード例 #3
0
        // Обработка файлов
        private void bw_DoWork(object sender, DoWorkEventArgs e)
        {
            ProgressBar.Value = 0;
            int          i            = 0;
            FB2Validator fv2Validator = new FB2Validator();

            switch (m_WorkMode)
            {
            case BooksAutoCorrectModeEnum.SelectedBooks:
                this.Text = string.Format("Автокорректировка выделенных {0} книг", m_listViewFB2Files.SelectedItems.Count);
                foreach (ListViewItem SelectedItem in m_listViewFB2Files.SelectedItems)
                {
                    if ((m_bw.CancellationPending))
                    {
                        e.Cancel = true;
                        return;
                    }
                    // обработка файла
                    WorksWithBooks.autoCorrect(
                        SelectedItem, SelectedItem.Text,
                        m_listViewFB2Files.SelectedItems.Count == 1 ? true : false,
                        m_sharpZipLib, m_fv2Validator
                        );
                    m_bw.ReportProgress(++i);
                }
                break;

            case BooksAutoCorrectModeEnum.CheckedBooks:
                this.Text = string.Format("Автокорректировка помеченных {0} книг", m_listViewFB2Files.CheckedItems.Count);
                foreach (ListViewItem CheckedItem in m_listViewFB2Files.CheckedItems)
                {
                    if ((m_bw.CancellationPending))
                    {
                        e.Cancel = true;
                        return;
                    }
                    // обработка файла
                    WorksWithBooks.autoCorrect(
                        CheckedItem, CheckedItem.Text,
                        m_listViewFB2Files.CheckedItems.Count == 1 ? true : false,
                        m_sharpZipLib, m_fv2Validator
                        );
                    m_bw.ReportProgress(++i);
                }
                break;

            case BooksAutoCorrectModeEnum.BooksInGroup:
                this.Text = string.Format("Автокорректировка {0} книг в Группе", m_listViewFB2Files.SelectedItems[0].Group.Items.Count);
                foreach (ListViewItem Item in m_listViewFB2Files.SelectedItems[0].Group.Items)
                {
                    if ((m_bw.CancellationPending))
                    {
                        e.Cancel = true;
                        return;
                    }
                    // обработка файла
                    WorksWithBooks.autoCorrect(Item, Item.Text, false, m_sharpZipLib, m_fv2Validator);
                    m_bw.ReportProgress(++i);
                }
                break;

            case BooksAutoCorrectModeEnum.BooksInAllGroup:
                this.Text = string.Format("Автокорректировка {0} книг во всех Группах", m_listViewFB2Files.Items.Count);
                foreach (ListViewItem Item in m_listViewFB2Files.Items)
                {
                    if ((m_bw.CancellationPending))
                    {
                        e.Cancel = true;
                        return;
                    }
                    // обработка файла
                    WorksWithBooks.autoCorrect(Item, Item.Text, false, m_sharpZipLib, m_fv2Validator);
                    m_bw.ReportProgress(++i);
                }
                break;

            default:
                return;
            }

            if ((m_bw.CancellationPending))
            {
                e.Cancel = true;
                return;
            }
        }