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

发布于 2024-12-16 16:25:09 字数 562 浏览 0 评论 0原文

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

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

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

有我可以使用的设计模式吗?使用 .net 语言解决此问题的简单方法是什么?

PS:不幸的是,我正在自动化一些叮叮当当的遗留软件,并且在许多地方都使用了backgroundworker,因此包装backgroundworker将是一些工作,并且可能会引发错误。

I have a BackgroundWorker in a vb.net program that is doing a lengthy data import routine. I want to modify its RunWorkerAsync method so that it fires a custom event on completion of the method. (So that a method in an automated process can respond to the event and resume its work). In a sense I want to 'extend' the RunWorkerAsync method to add an extra line of code--but I can't 'see' the code in the method (to just add the line raising the event) because BackgroundWorker is an MSDN class from Microsoft.

The only solution that I can think of is to 'wrap' the background worker class in a wrapper that calls the .RunWorkerAsync method and then raises the event.

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

Is there a design pattern that I might use? An easy way to address this with the .net language?

PS: Unfortunately, I'm automating some clanking legacy software and backgroundworker is used in many locations, so wrapping the backgroundworker will be a bit of work and may open bugs.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

你是暖光i 2024-12-23 16:25:09

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

点击 RunWorkerComplete 事件并将其用作“引发自定义事件”,以下是 MSDN 上的示例:

后台工作人员RunWorkerCompleted 事件

"In a sense I want to 'extend' the RunWorkerAsync method to add an extra line of code"

Tap into the RunWorkerComplete event and use that as your "raise customEvent", here is an example on MSDN:

Background Worker RunWorkerCompleted event

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文