求问backgroundworker的ProgressChanged执行时间?

snvan 2012-11-09 03:01:11

private void backgroundWorkerLoad_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
int per = e.ProgressPercentage;
if (per == 0)
{
MessageBox.show("begin");
}
else
{
MessageBox.show("end");
}
}
private void backgroundWorkerLoad_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
MessageBox.Show("查询成功!");
}
private void backgroundWorkerLoad_DoWork(object sender, DoWorkEventArgs e)
{
getDWBH(backgroundWorkerLoad);
}
private void getDWBH(BackgroundWorker bworker)
{
try
{
bworker.ReportProgress(0);
if (!bworker.CancellationPending)
{
//耗时操作
}
bworker.ReportProgress(100);
}
catch (Exception ex)
{
MessageBox.Show("重置出错!\n" + ex.ToString());
}
finally
{
}
}


代码如上,运行时的流程跟我想的不一样,先是输出了 “查询成功”,然后再“end”。然后才“begin”。正常的流程不应该是ReportProgress调用后先执行了1次ProgressChanged,然后dowork的内容,之后再调用1次ProgressChanged,最后才是RunWorkerCompleted?求解
PS:分数不多,请见谅
...全文
55 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧