2012-02-16 6 views
0

私はデータ抽出プロシージャのためにBackgroundWorkerを使用してWinFormプロジェクトに取り組んでいますが、定期的にアクティビティの進行状況を示すプログレスバーを更新する必要があります。BackgroundWorkerはアクティビティの進行状況を報告します

私の質問は、「私の場合、異なるクラスに実装されている」抽出ロジックを「進捗レポート」ロジックから切り離す方法はありますか?

+0

あなたが仕事をしているロジックの外にいる場合、どれだけ進歩したかをどのように知っていますか? – dasblinkenlight

+0

@dasblinkenlightは明らかです。だから、別のクラスで抽出ロジックを実装したいのであれば、私の "抽出クラス"から 'ReportProgress(percentProgress);'を呼び出す方法を見つけなければならないと思います...間違っていますか? – davioooh

+0

必須ではありません:あなたの作業ロジックは、進行状況がいつ変更されるかを決定する必要がありますが、 'ReportProgress'を直接呼び出す必要はありません:バックグラウンドワーカーは作業ロジックの進捗報告と' ReportProgress' ;下の私の答えを参照してください。 – dasblinkenlight

答えて

0

作業を行うロジックから進行状況を報告するロジックを切り離すことはできませんが、プログレスバーを更新するロジックから進行状況を報告するロジックを切り離すことはできます。

これを実行する方法の1つは、作業を行うロジックでイベントハンドラを登録した関係者に進捗状況を報告する作業を行うイベントをクラスに提供し、進捗が変化すると定期的に呼び出すことです。

あなたのバックグラウンドワーカーは、「仕事をする」ロジックからこれらのイベント通知を受け取るように登録し、そのイベントから受け取ったデータで自身のReportProgressを呼び出すことで、「利害関係者」になります。このようにして、「仕事をする」ロジックは、バックグラウンドワーカーのReportProgressを認識しないままになります。

+0

はい、それはまさに私が意味するものです。私はまだWinFormsに熟練していないので、私は確認を求めていた。どうもありがとうございました。 – davioooh

関連する問題