1

バックグラウンドワーカーのサブクラスがあります。New ブロックにすべての引数を登録したら、RunWorkerAsync メソッドを開始します。これは後で私に問題を引き起こすのでしょうか、そして/またはこれは悪い習慣ですか?

        Public Sub New(ByVal theNum As Integer)
            _theNum = theNum
            Me.RunWorkerAsync() ' 自動的に実行を開始します。これは私を噛むでしょうか?
        サブ終了

このサブクラスの場合、ワーカーがインスタンス化されるとすぐに、作業をすぐに開始したいことがわかります。

4

1 に答える 1

2

設計の観点からは、コンストラクターが実際の作業をできるだけ行わないようにすることをお勧めします。その理由は、コンストラクターでの作業が予期しない動作や一般的なバグにつながる可能性があるためです。また、コードの柔軟性が低下し、単体テストが非常に難しくなる可能性があります。ただし、これらの提案は、コンストラクターで行われるすべての作業に適用されます。バックグラウンドワーカーだけに特に適用されるわけではありません。そして、他の格言と同様に、ルールの例外が存在することもあります。

技術的な観点からは、デザイナーが挿入したメソッドが呼び出された後に呼び出す限り、InitializeComponent悪影響はありません。

于 2013-09-13T15:10:37.363 に答える