private void MyBackWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
try
{
this.MyBar.Value = e.ProgressPercentage;
this.labMessage.Text = e.UserState.ToString();
this.labMessage.Update();
}
catch(Exception Ex)
{
MessageBox.Show(Ex.Message.ToString());
}
} private void MyBackWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
//线程处理完成时
try
{
MessageBox.Show("完成!");
}
catch(Exception Ex)
{
MessageBox.Show(Ex.Message.ToString());
}
} private void MyBackWorker_DoWork(object sender, DoWorkEventArgs e)
{
//开始执行后台程序
try
{
this.work(MyBackWorker,e);
}
catch(Exception Ex)
{
MessageBox.Show(Ex.Message.ToString());
}
} private void work(BackgroundWorker bk,DoWorkEventArgs e)
{
int Nums = 1000000;
for (int i = 1; i < Nums; i++)
{
if (bk.CancellationPending)
{
bk.ReportProgress(i, String.Format("当前值是 {0},操作被用户申请中断", i));
e.Cancel = true;
break;
}
bk.ReportProgress(i, String.Format("当前值是 {0} ", i));
}
} private void btnStart_Click(object sender, EventArgs e)
{
try
{
this.MyBackWorker.RunWorkerAsync();
}
catch(Exception Ex)
{
MessageBox.Show(Ex.Message.ToString());
}
} private void btnStop_Click(object sender, EventArgs e)
{
try
{
this.MyBackWorker.CancelAsync();
}
catch(Exception Ex)
{
MessageBox.Show(Ex.Message.ToString());
}
}
{
try
{
this.MyBar.Value = e.ProgressPercentage;
this.labMessage.Text = e.UserState.ToString();
this.labMessage.Update();
}
catch(Exception Ex)
{
MessageBox.Show(Ex.Message.ToString());
}
} private void MyBackWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
//线程处理完成时
try
{
MessageBox.Show("完成!");
}
catch(Exception Ex)
{
MessageBox.Show(Ex.Message.ToString());
}
} private void MyBackWorker_DoWork(object sender, DoWorkEventArgs e)
{
//开始执行后台程序
try
{
this.work(MyBackWorker,e);
}
catch(Exception Ex)
{
MessageBox.Show(Ex.Message.ToString());
}
} private void work(BackgroundWorker bk,DoWorkEventArgs e)
{
int Nums = 1000000;
for (int i = 1; i < Nums; i++)
{
if (bk.CancellationPending)
{
bk.ReportProgress(i, String.Format("当前值是 {0},操作被用户申请中断", i));
e.Cancel = true;
break;
}
bk.ReportProgress(i, String.Format("当前值是 {0} ", i));
}
} private void btnStart_Click(object sender, EventArgs e)
{
try
{
this.MyBackWorker.RunWorkerAsync();
}
catch(Exception Ex)
{
MessageBox.Show(Ex.Message.ToString());
}
} private void btnStop_Click(object sender, EventArgs e)
{
try
{
this.MyBackWorker.CancelAsync();
}
catch(Exception Ex)
{
MessageBox.Show(Ex.Message.ToString());
}
}
解决方案 »
- 求助:关于SslStream.AuthenticateAsClient验证的问题
- Attempted to read or write protected memory. This is often an indication that ot
- 如何屏蔽AxWebBrowser弹出的脚本错误
- winform调用webservice
- 如何让c# windows程序 定时启动或者一直运行正常(着急)
- 请教一个反射的问题(帮顶有分)
- ADO.NET 1.1下,如何获取数据库中有哪些表、视图?
- 提示asp.net版本不对问题
- C#中的报表问题
- DataGrid高手請進,,在线等!急!
- wpf 如何用keydown事件获得键盘输入的字符
- <急>!!(猛戳这里啊)关于IIS安装问题
private void button2_Click(object sender, EventArgs e)
{
BackgroundWorker wb = new BackgroundWorker();
wb.DoWork += wb_DoWork;
wb.WorkerReportsProgress = true;
wb.ProgressChanged += wb_ProgressChanged;
wb.RunWorkerCompleted += wb_RunWorkerCompleted;
wb.RunWorkerAsync();
} void wb_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
this.button2.Text = "OK";
} void wb_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
this.progressBar1.Value = e.ProgressPercentage;
} void wb_DoWork(object sender, DoWorkEventArgs e)
{
int i = 0;
while (i < 100)
{
((BackgroundWorker)sender).ReportProgress(i);
i++;
Thread.Sleep(300);
}
}给个简单例子给你看。
然后把下面的代码加到For体的最上面,你就能看到效果。
if (DateTime.Now.Subtract(tempTime).Ticks == 0)
continue;
else
tempTime = DateTime.Now;