2013-05-27 14 views
6

ReportProgressメソッドは2つのパラメータを取ります。 1つはintで、もう1つはユーザーの状態です。私はいくつかの処理目的のためのメソッドにいくつかの文字列パラメータを渡しており、intの必要はありません。バックグラウンドワーカーReportProgressメソッド

ReportProgress([randomInt], "MyString")を使用してレポートの進行方法を呼び出す冗長性を持たずに最初のintを渡すことを省略する方法はありますか?ちょうどコードをクリーニングするためです。

+1

いいえ、j必要に応じて、 'dummyProgress'という定数を渡します。 :) –

+1

オーバライドメソッドのように作成する方法はありますか?この "役に立たないパラメータ"のことは私をちょっと悩ませている=) –

+0

ハハオクラホルン。 :) –

答えて

4

ReportProgressを呼び出します拡張メソッドを記述し、RobSiklosが示唆するように、メソッドに0を渡すか:

public static class BackgroundWorkerExt 
{ 
    public static void ReportProgress(this BackgroundWorker self, object state) 
    { 
     const int DUMMY_PROGRESS = 0; 
     self.ReportProgress(DUMMY_PROGRESS, state); 
    } 
} 

それでは、以下のことができるでしょう(パラメータがintでないかぎり、普通のReportProgress(int)が呼び出されます)。

_backgroundWorker.ReportProgress("Test"); 
1

それはパラメータを持っているProgressChangedイベントを発生させますので、あなたが最初のパラメータを隠し拡張メソッド(ちょうど0と実際のメソッドを呼び出します)

+0

どのようにして拡張メソッドを作成しますか? –

2

を作成することができReportProgress方法は、int型を取る必要がありますProgressChangedEventArgsがあり、プロパティーはProgressPercentageです。

は、単にあなたがそうのようにBackgroundWorkerのための拡張メソッドを作成することができます0