0

大量のデータをインポートし、インポートごとにさまざまな計算を行うために使用される .NET Windows フォーム アプリケーションを作成しています。この目的のために、1 つの「メイン」ワーカーと複数の「子」ワーカーを作成しました。

インポート ジョブはすべて MySql データベース内にリストされており、ジョブが存在するかどうかを確認する関数を設定しました。

私が知る必要があるのは、子ワーカーが仕事を終えた後、コントロールがどこに渡されるかということです。子ワーカーを実行してジョブを割り当てるために、メイン ワーカーを再度呼び出す必要がありますか?

メイン ワーカーは、フォーム ロード イベントで呼び出されます。メイン ワーカーを初めて実行し、子レベルで作業を開始した場合、メイン ワーカーは制御を再びフォーム ロードに渡しますか?

インポート ジョブにはそれぞれお金がかかるため (API の使用/ヒット)、テストを実行できません。そのため、テスト実行を行う前に、できるだけアプリを作成したいと考えています。

4

1 に答える 1

3

はい、バックグラウンド作業を開始すると、作業が別のスレッドで処理されている間、制御は呼び出し元のメソッドに戻ります。

バックグラウンド作業が完了したときに通知するイベント ハンドラーを作成できます。

    private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
        if (e.Cancelled == true)
        {
            resultLabel.Text = "Canceled!";
        }
        else if (e.Error != null)
        {
            resultLabel.Text = "Error: " + e.Error.Message;
        }
        else
        {
            resultLabel.Text = "Done!";
        }
    }

完全な使用例は次の場所にあります。

http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx

于 2012-07-11T22:33:29.357 に答える