如何修改.net的BackgroundWorker类,以便在方法完成时触发自定义事件

时间:2011-11-16 22:15:55

标签: .net vb.net design-patterns backgroundworker

我在vb.net程序中有一个BackgroundWorker,它正在执行冗长的数据导入例程。我想修改其RunWorkerAsync方法,以便在完成该方法时触发自定义事件。 (这样自动化过程中的方法可以响应事件并恢复其工作)。从某种意义上说,我想“扩展”RunWorkerAsync方法以添加额外的代码行 - 但是我无法“看到”方法中的代码(只是添加引发事件的行),因为BackgroundWorker是一个MSDN类来自微软。

我能想到的唯一解决方案是将后台工作者类“包装”在一个调用.RunWorkerAsync方法然后引发事件的包装器中。

Public sub wrapperMethod()
    myBackgroundWorker.RunWorkerAsync()
    raise customEvent
end sub

我可能会使用一种设计模式吗?用.net语言解决这个问题的简单方法吗?

PS:不幸的是,我正在自动化一些叮当作响的遗留软件,并且在许多地方使用后台工作程序,因此包装后台工作程序将会有一些工作并且可能会打开错误。

1 个答案:

答案 0 :(得分:7)

“从某种意义上说,我想'扩展'RunWorkerAsync方法以添加额外的代码行”

点击RunWorkerComplete事件并将其用作“raise customEvent”,这是MSDN上的一个示例:

Background Worker RunWorkerCompleted event