0

こんにちは、ロードに時間がかかる関数があります。そのため、プログラムがまだ実行中であることをユーザーが知ることができるように、winform にプログレス バーを配置する予定です。しかし、私はそれを解決する方法がわかりません。私を導くのを手伝ってくれる人がここにいますか?

これが私がやろうとしていることです:

 private void btnProcess_Click(object sender, EventArgs e)
        {
          //function which takes time because it contacts to a server
        }

プロセスが終了した後に増加して終了するプログレスバーが必要です。これにはバックグラウンドワーカーを使用する必要がありますか?

***私はこのチュートリアルhttp://www.codeproject.com/Tips/83317/BackgroundWorker-and-ProgressBar-demoに従いましたが、ロード画面のように特定の機能やイベントが終了するのを待ちません。

***ボタンクリック イベントがすべての関数の実行を終了した後、プログレス バーが終了しません。

私は作成しました:

private void myBackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            for (int i = 0; i <= 100; i++)
            {
                myBackgroundWorker.ReportProgress(i);
                System.Threading.Thread.Sleep(100);
            }
        }

private void myBackgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            myProgressBar.Value = e.ProgressPercentage;
        }

 private void btnProcess_Click(object sender, EventArgs e)
            {
              myBackgroundWorker.RunWorkerAsync();
              //function which takes time because it contacts to a server
            }

ボタンクリックイベントがいつ終了するかを知るにはどうすればよいですか? プログレスバーも終了するように?

4

2 に答える 2