我想用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