none
c# backgroundWorker RRS feed

  • 问题

  • c# backgroundWorker  中backgroundWorker1.ReportProgress 触发backgroundWorker1_ProgressChanged事件,这个事件来处理跟UI的操作,这个操作是同步还是异步 啊,我运行的时候它好像执行好几遍backgroundWorker1_ProgressChanged里的程序
    2009年6月23日 2:02

答案

全部回复

  • 这个是异步线程会调主线程的事件   相对主线程同步的
    紫柔版主的头像真叫萌得一个不行啊。。。。
    答案800 撒花
    2009年6月23日 2:11
    版主
  • 我想获取UI的值之后在继续运行,能实现吗?还有我这backgroundWorker1_ProgressChanged事件执行好几遍是咋回事啊?
    2009年6月23日 2:15
  • 你好!
         BackgroundWorker处理的是异步操作,如果您需要后台操作报告其进度,则可以调用 ReportProgress 方法来引发 ProgressChanged 事件。
    周雪峰
    2009年6月23日 2:18
    版主
  • 可是我需要跟界面进行交互信息啊,我需要获得界面的值才能让 BackgroundWorker继续运行,这能控制吗?还是能有其他的办法
    2009年6月23日 2:22
  • 如果你不操作UI的话,你可以直接在 DoWrok 中获取 UI 控件的值,操作UI可以在DoWorkComplated 事件中写(如果需要在线程中操作主线程UI,可以通过Invoke或BeginInvoke来做), ProgessCharged 多次执行可能是你多次调用了 ReportProgress
    知识改变命运,奋斗成就人生!
    2009年6月23日 2:27
    版主
  • 我能在DoWrok 中设置 UI 控件的值吗?
    2009年6月23日 2:41
  • 上面已描述了,如果需要在线程中操作主线程UI,可以通过Invoke或BeginInvoke来做
    知识改变命运,奋斗成就人生!
    2009年6月23日 2:45
    版主
  • DoWork事件中的代码块是在线程中运行的
    知识改变命运,奋斗成就人生!
    2009年6月23日 2:46
    版主
  • 我需要的是异步操作,咋样触发DoWorkComplated 事件就马上执行这个事件,DoWork事件处于暂停状态,待DoWorkComplated 事件执行完了,再执行DoWork事件
    2009年6月23日 3:11
  • DoWorkComplated 是在 DoWork执行完之后才会执行的, 我们项目也是用的 BackgroundWorker 进行异步提交数据的,在 DoWrok 中执行异常的提交,在 DoWorkComplated 中操作UI显示更新结果
    知识改变命运,奋斗成就人生!
    2009年6月23日 3:14
    版主
  • 你好,鉴于你的问题非C#语言特有,而和Windows窗体类库有关,我将把此贴移至.Net一般性问题版。


    Please mark the post answered your question as the answer, and mark other helpful posts as helpful. This posting is provided "AS IS" with no warranties, and confers no rights.
    Visual C++ MVP
    2009年6月23日 15:18
    版主
  • 你可以在子线程中等待主线程触发一个事件,参考等待句柄
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful. This posting is provided "AS IS" with no warranties, and confers no rights.
    Visual C++ MVP
    2009年6月23日 15:20
    版主