BackgroundWorker同窗体使用,一个简单的进度条示例
BackgroundWorker m_cpbarWorker;//变量定义
private void button1_Click(object sender, EventArgs e)
{
//初始化
m_cpbarWorker = new BackgroundWorker();
m_cpbarWorker.DoWork += new DoWorkEventHandler(m_cpbarWorker_DoWork);
m_cpbarWorker.ProgressChanged += new ProgressChangedEventHandler(m_cpbarWorker_ProgressChanged);
m_cpbarWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(m_cpbarWorker_RunWorkerCompleted);
m_cpbarWorker.WorkerReportsProgress = true;
m_cpbarWorker.WorkerSupportsCancellation = true;
progressBar1.Visible = true ;
m_cpbarWorker.RunWorkerAsync();//启动DoWork事件
}
//每0.2秒给进度条传一次值
private void m_cpbarWorker_DoWork(object sender, DoWorkEventArgs e)
{
try
{
m_cpbarWorker.ReportProgress(50);
Thread.Sleep(200);
m_cpbarWorker.ReportProgress(80);
Thread.Sleep(200);
}
catch (Exception ex)
{
}
}
//进度条接受DoWork事件传来的值,界面进行更新
private void m_cpbarWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
}
//完成后将进度条隐藏
private void m_cpbarWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
progressBar1.Visible = false;
}