更新时间:2023-12-02 22:26:46
BackgroundWorker是正确的方法:它很简单:
BackgroundWorker is the right way to go: it's pretty easy:
void DoSomethingInTheBackGround()
{
BackgroundWorker work = new BackgroundWorker();
work.WorkerReportsProgress = true;
work.DoWork += new DoWorkEventHandler(work_DoWork);
work.ProgressChanged += new ProgressChangedEventHandler(work_ProgressChanged);
work.RunWorkerCompleted += new RunWorkerCompletedEventHandler(work_RunWorkerCompleted);
work.RunWorkerAsync();
}
void work_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
myTextBox.Text = "Done!";
}
void work_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
myTextBox.Text = e.ProgressPercentage.ToString();
myProgressBar.Value = e.ProgressPercentage;
}
void work_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker work = sender as BackgroundWorker;
// Do your work here, but don't access any Controls!
for (int i = 0; i < 100; i++)
{
//...
work.ReportProgress(i);
}
}