namespace worker
{
public partial class Form1 : Form
{
private BackgroundWorker bgw = new BackgroundWorker();
public Form1()
{
InitializeComponent();
bgw.WorkerReportsProgress= true;
bgw.WorkerSupportsCancellation = true;
bgw.DoWork += new DoWorkEventHandler(dowork);
bgw.ProgressChanged += new ProgressChangedEventHandler(progresschanged);
bgw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(runcompleted);
}
public void dowork(object sender, DoWorkEventArgs e)
{
for(int i=0;i<=100;i++)
{
if(bgw.CancellationPending)
{
e.Cancel = true;
return;
}
else
{
bgw.ReportProgress(i, "Running");
System.Threading.Thread.Sleep(100);
}
}
}
public void progresschanged(object sender, ProgressChangedEventArgs e)
{
this.progressBar1.Value = e.ProgressPercentage;
}
public void runcompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Error != null)
{
MessageBox.Show(e.Error.ToString());
return;
}
if (!e.Cancelled)
MessageBox.Show("OK");
}
private void Button1_Click(object sender, EventArgs e)
{
if(bgw.IsBusy)
{
return;
}
this.progressBar1.Maximum = 100;
this.button1.Enabled = false;
this.button2.Enabled = true ;
bgw.RunWorkerAsync();
}
private void Button2_Click(object sender, EventArgs e)
{
this.button1.Enabled = true;
this.button2.Enabled = false;
bgw.CancelAsync();
}
}
}
C#_backgroundworker
最新推荐文章于 2024-08-20 13:33:55 发布