0

我正在编写一个 Windows 窗体应用程序,大量使用 BackgroundWorkers,有一个问题让我担心。这是一个示例情况:

  1. BackgroundWorker 执行其耗时的操作。
  2. 当 BackgroundWorker 仍在运行时,用户按下窗体上的按钮。
  3. Button.Click 事件处理程序开始执行,完成一些语句,但还有更多。
  4. 此时,BackgroundWorker 完成了它的任务,或者引发了异常,因此控件应该转到 BackgroundWorker.RunWorkerCompleted 事件处理程序。

好吧,我的问题是:BackgroundWorker.RunWorkerCompleted 事件处理程序是否有可能中断 Button.Click 事件处理程序的执行?

4

1 回答 1

0

完成DoWork后,RunWorkerCompleted将在已启动的线程上调用BackgroundWorker。假设它是主线程。这意味着它将在主线程的消息队列上发布一条消息。如果主线程当前正在处理消息(例如 Button.Click 事件),RunWorkerCompleted则将坐在线程的消息队列中,直到它到达。含义 - 它不会中断/与按钮事件处理程序发生冲突。

于 2012-03-06T21:12:10.580 回答