У меня есть список, в котором я должен дать как минимум 2 файла для слияния.
слияние завершается, когда я нажимаю кнопку «Объединить». Запускается индикатор выполнения и появляется окно сообщения о том, что файлы были объединены. Я использую фоновый рабочий для запуска индикатора выполнения.
Теперь проблема в том, что когда объединение завершено с 2 файлами, я добавляю еще один файл, нажимаю кнопку объединения, появляется сообщение об объединении, я нажимаю кнопку ОК в окне сообщения, снова появляется окно сообщения с тем же сообщением, которое имеет Готово. Это окно сообщения продолжает отображаться, сколько раз я добавляю файл в список.
Например, для 2 файлов появляется сообщение 1ce den при добавлении еще 1 файла появляется сообщение 2ice, появляется еще 1 файл в списке сообщений 3ic. Как и в случае его продолжения ....
Когда я использовал отладчик, чтобы отследить его, я заметил, что мое событие Background Worker Runcompleted вызывается столько раз, когда я добавляю файл в список. Вот код события слияния кнопки Click ...
Worker.DoWork += new DoWorkEventHandler(Worker_DoWork);
Worker.RunWorkerCompleted +=
new RunWorkerCompletedEventHandler(Worker_RunWorkerCompleted);
Worker.WorkerSupportsCancellation = true;
if (!Worker.IsBusy)
Worker.RunWorkerAsync();
else
MessageBox.Show("Cannot run background worker twice ");
if (Worker.IsBusy)
{
progress = new ProgressDialogDTB();
progress.FormClosing +=
new FormClosingEventHandler(ProgressDialog_FormClosing);
progress.ShowDialog(this);
}
while (Worker.IsBusy)
{
Application.DoEvents();
}
//For Background Worker completed Event...
private void Worker_RunWorkerCompleted(object sender,
AsyncCompletedEventArgs e)
{
if (progress != null)
{
progress.Close();
progress = null;
}
if ( e.Cancelled )
MessageBox.Show(" Progress was cancelled ");
if (e.Error == null)
if (!e.Cancelled)
MessageBox.Show("Files has been merged ");
if (e.Error != null)
MessageBox.Show(e.Error.Message);
}//Worker_RunWorkerCompleted
Я не знаю, где я ошибаюсь.
Пожалуйста, помогите ... Спасибо ...