我有一個列表框,我必須給出最少2個文件進行合併。 合併完成時,我單擊合併按鈕。進度條開始和消息框出現文件已合併。我使用後臺工作人員運行進度欄。在ListBox中添加項目時,BackgroundWorker在C#中給出問題?
現在的問題是當合並完成與2個文件,我添加一個文件,單擊合併按鈕合併完成消息出現我單擊確定的消息框,再次消息框出現相同的消息合併已完成。此消息框將繼續顯示我在列表框中添加文件的次數。
例如,對於2個文件信息出現1CE巢穴上添加1級出現更多的文件的消息2ice,1個更多的文件中的列表框消息顯示3ic.Like存款保險計劃繼續....
當我用調試器來跟蹤它,我發現我的後臺工作Runcompleted事件被稱爲是一些每當我添加文件中的listbox.Here是合併按鈕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
我不知道在哪裏我錯了。 請幫助...謝謝...
你可以分享工人代碼嗎?什麼構成完成?如果它被調用了x次,那麼它的理由是你的工作者已經完成了x次,或者因爲它是如何工作的或者它被實例化了x次。 – Lazarus 2009-06-23 11:46:46
很多代碼,但沒有一個與問題有關。 – Will 2009-06-23 11:49:15