【发布时间】:2010-03-22 06:31:38
【问题描述】:
一个 winforms 对话框正在使用 BackgroundWorker 执行一些异步操作,并取得了巨大的成功。有时,后台工作人员正在运行的异步进程需要向 winforms 应用程序引发事件以供用户响应(询问用户是否希望取消的消息),其响应在事件的 CancelEventArgs 类型中捕获.
作为线程的实现,我本来希望工作人员的 RaiseEvent 会触发,然后工作人员会继续,因此需要我暂停工作人员,直到收到响应。然而,worker 会等待由 raise 事件执行的代码完成。
似乎我通过事件调用调用的方法实际上是在后台工作人员使用的工作线程上,我很惊讶,因为我希望在主窗体运行的主线程上看到它。同样令人惊讶的是,没有抛出跨线程异常。
有人能解释一下为什么这不是我所期望的吗?
【问题讨论】:
标签: .net vb.net multithreading backgroundworker