バックグラウンドワーカープロセスをフォームで作成します..
BackgroundWorker bw = new BackgroundWorker
{
WorkerReportsProgress = true,
WorkerSupportsCancellation = true
};
また、フォーム内に進行状況バー コントロールがあります (進行状況バーの最小値と最大値は 1 と 100 です)。
私のボタンクリックでは、
クリックイベントがバックグラウンドで並行して実行されるはずの実際のメソッド呼び出しを開始する場所で、プログレスバーのステップの表示を開始します....
if (bw.IsBusy)
{
return;
}
bw.DoWork += (bwSender, bwArg) =>
{
MethodCall1(); - Does some database insertions..
MethodCall2(); - Does some database select...
}
bw.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged);
bw.RunWorkerCompleted += (bwSender, bwArg) =>
{
bw.Dispose();
};
bw.RunWorkerAsync();
プログレスバーに進行状況を表示するには...
void bw_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar.Value = e.ProgressPercentage;
}
私が直面している問題は、進行状況バーがステップしていない、静止しており、進行状況バーの進行状況がないことです。
また、実際のメソッドに bw.ReportProgress(integervalue) を挿入しようとしましたが、役に立ちませんでした。
バックグラウンド ワーカー スレッドでメソッド呼び出しを処理し、進行状況バーの進行状況を並行して表示するにはどうすればよいですか。メソッド呼び出しが完了した後、進行状況バーのステップを終了したいと考えています。