2011-10-22 7 views
5

私はいくつかの大きなファイルを処理していますが、私はbackgroundWorker1.ReportProgress(percent)を使用して各ファイルが完了すると進捗状況を報告しています。しかし、今度は、処理中の各ファイルの進捗状況を報告するための2番目の進捗バーが必要です(次のファイルのためにリセットされます)。読んでいる現在のバイト位置を使用して、ファイルの合計サイズで割って進捗をパーセンテージで取得できます。 ProgressChangedイベントが1つしかない場合、progressBar2にこの値を渡すにはどうすればよいですか?2つのプログレスバーのBackgroundworkerレポートの進捗状況

答えて

5

1つの方法は、BackgroundWorker.ReportProgress(Int32, Object)を使用して、必要なものをuserStateパラメータに渡すことです。

もう1つのことは、最初の進行状況バーで100%に達したときに、もう一方のバーを増やす必要があることを単に知ることです。

3

ReportProgressには、余分なオブジェクトを渡すことができるoverloadがあります。これを使用して、必要な余分な状態を返すことができます。

public void ReportProgress(
    int percentProgress, 
    Object userState 
) 

次に、ProgressChangedEventArgs.UserStateから状態を読み取ることができます。

関連する問題