使用BackgroundWorker

BackgroundWorker bw = new BackgroundWorker();
bw.WorkerReportsProgress = true;
bw.WorkerSupportsCancellation = true;
bw.DoWork += new DoWorkEventHandler(bw_DoWork);
bw.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged);
bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
bw.RunWorkerAsync(500); //开始线程
bw.CancelAsync();//取消线程

 //完成时
void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
MessageBox.Show("Finish");
}

//进度改变
void bw_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
}


//执行时
void bw_DoWork(object sender, DoWorkEventArgs e)
{
i = 0;
DoMyWork((BackgroundWorker)sender, e);
}


//线程函数
void DoMyWork(BackgroundWorker worker, DoWorkEventArgs e)
{
while (!worker.CancellationPending && i < (int)e.Argument)
{
System.Threading.Thread.Sleep(10);
i++;
worker.ReportProgress(i * 100 / (int)e.Argument, i.ToString());
}
}

posted @ 2009-03-02 08:53  cindymeng  阅读(218)  评论(0编辑  收藏  举报