我想用backgroundworker更新我的進度條。只有這一點工作。這裏是我的代碼:C#進度條不會更新backgroundworker
private BackgroundWorker _worker;
public Form1(string[] args)
{
InitializeComponent();
// Backgroundworker to update the progressbar
_worker = new BackgroundWorker();
_worker.WorkerReportsProgress = true;
_worker.ProgressChanged += worker_ProgressChanged;
_worker.DoWork += worker_DoWork;
_worker.RunWorkerCompleted += worker_WorkCompleted;
}
private void worker_DoWork(object sender, DoWorkEventArgs e)
{
SendItems();
}
private void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
}
private void worker_WorkCompleted(object sender, RunWorkerCompletedEventArgs e)
{
_running = false;
HandleGui();
}
private bool SendItems()
{
try
{
GetEvaluationDocumentsToSend();
_worker.ReportProgress(16);
GetModifiedEvaluationDocumentsToSend();
_worker.ReportProgress(32);
GetTasksToSend();
_worker.ReportProgress(48);
GetPostToSend();
_worker.ReportProgress(64);
GetContractDocumentsToSend();
_worker.ReportProgress(80);
GetModifiedContractDocumentsToSend();
_worker.ReportProgress(100);
return true;
}
catch (Exception e)
{
Log.WriteLog(e.ToString());
MessageBox.Show(
"The following error occured while sending the items: \r\n" + e.ToString(),
"Error",
MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
return false;
}
}
private void btnUpdate_Click(object sender, EventArgs e)
{
_worker.RunWorkerAsync();
}
我沒有得到任何錯誤,但我的進度條不會更新。我究竟做錯了什麼?
ProgressChanged事件是否實際觸發? – GenericTypeTea 2009-11-24 09:22:55
是的。當我在方法調用和progressChanged事件上設置斷點時,首先執行該方法,然後執行progressChanged事件。 – Martijn 2009-11-24 09:29:54
我測試了你的代碼,它工作正常。你還有其他設置進度欄的值嗎?另外,你的進度條的最小值和最大值是多少? – 2009-11-24 09:32:49