我在界面上第一了一个BackgroundWorker组件
现在
private void gisBackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
gisBackgroundWorker.ReportProgress(10, "110");
gisBackgroundWorker.ReportProgress(20, "111");
gisBackgroundWorker.ReportProgress(100, "112");
}
private void gisBackgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
MessageBox.Show(e.UserState.ToString());
} private void gisBackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
MessageBox.Show("完成");
}
调用的时候 为什么事先弹出“完成”
再弹出“112” “111”,“110”
按照介绍的不是应该gisBackgroundWorker.ReportProgress(10, "110");
触发事件 private void gisBackgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)么?
这个时候先MessageBox.Show(e.UserState.ToString()); 弹出“110”么?
不懂 为什么会这样
能分析一下么?
现在
private void gisBackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
gisBackgroundWorker.ReportProgress(10, "110");
gisBackgroundWorker.ReportProgress(20, "111");
gisBackgroundWorker.ReportProgress(100, "112");
}
private void gisBackgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
MessageBox.Show(e.UserState.ToString());
} private void gisBackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
MessageBox.Show("完成");
}
调用的时候 为什么事先弹出“完成”
再弹出“112” “111”,“110”
按照介绍的不是应该gisBackgroundWorker.ReportProgress(10, "110");
触发事件 private void gisBackgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)么?
这个时候先MessageBox.Show(e.UserState.ToString()); 弹出“110”么?
不懂 为什么会这样
能分析一下么?
解决方案 »
- c#异步委托问题
- vs2008连sql2005时出现这样的问题(做asp.net网站时)
- 哭求:ExitWindowsEx 系统不识别?头文件?C#用什么函数重启系统,>.\setup.cpp(116) : error C3861: “Exi比如手机
- XML --参数实体,为什么报错
- 散分:大家在开发3层架构时,是先用工具生成基础代码呢还是完全手写,如果用工具都用什么工具?
- C#模拟重力小提问!
- 在Hashtable表中,如何区分:不存在的键与添加了null值的键??
- 怎么让按钮不能获得焦点,马上给分!
- 我下载了vs.net2003,为什么只能安装在C盘?
- C#能做屏保程序吗?
- 关于打开MDI子窗体时,MdiWindowsListItem 列表中加载的名称问题
- 模拟ctr+alt+del按键
private void gisBackgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
}
如果这么写就没问题了
我想可能MessageBox.Show(e.UserState.ToString())阻塞了界面线程
引发的问题
ProgressChanged 调用 ReportProgress 时发生
RunWorkerCompleted 当后台操作已完成、被取消或引发异常时发生
DoWork事件是在后台线程中运行的,在该事件中不能够操作用户界面的内容,如果需要更新用户界面,可以使用ProgressChanged事件及RunWorkCompleted事件来实现