【问题标题】:Should I start the RunWorkerAsync method of a BackgroundWorker subclass within the constructor?我应该在构造函数中启动 BackgroundWorker 子类的 RunWorkerAsync 方法吗?
【发布时间】:2013-09-13 23:10:37
【问题描述】:

我有一个后台工作者的子类。在 New 块中注册所有参数后,我想启动 RunWorkerAsync 方法。这是否会给我以后带来麻烦和/或这是不好的做法?

Public Sub New(ByVal theNum As Integer) _theNum = theNum Me.RunWorkerAsync() ' 自动开始运行;这会咬我吗? 结束子

在这个子类的情况下,一旦工人被实例化,我就知道我想立即开始工作。

【问题讨论】:

  • 在这种情况下,它工作得很好。但我是 BackgroundWorker 的新手,我想知道是否有任何理由避免拥有自启动的工人。
  • 我在这里没有特别看到问题 - 如果需要,我会让其他人加入。
  • 如果您的班级引发了 EVENTS,那么您可能会错过它们,因为在您有机会订阅该实例的事件之前,工作已经开始(并且可能引发了一个事件)班级的...

标签: vb.net backgroundworker


【解决方案1】:

从设计的角度来看,我建议尽可能让构造函数不做任何实际工作。原因是构造函数中的工作可能导致意外行为和一般错误。它还可以使您的代码不那么灵活,并且更难以进行单元测试。但这些建议适用于构造函数中完成的所有工作。它们并不专门适用于后台工作人员。就像任何格言一样,有时也会有例外。

从技术角度来看,只要你在设计器插入的InitializeComponent 方法被调用之后调用它,那么你就不应该有任何负面影响。

【讨论】:

  • 谢谢!正是我需要的那种洞察力,尤其是关于 InitializeComponent 的提示,我什至还没有考虑过。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-17
  • 1970-01-01
  • 1970-01-01
  • 2017-06-07
  • 1970-01-01
相关资源
最近更新 更多