FiFiWiki2

FiFiWikiの第2版

ユーザ用ツール

サイト用ツール


c.sharp:非同期_プログレスバー

**以前のリビジョンの文書です**

[時間のかかる処理の進行状況を表示する - .NET Tips (VB.NET,C#...)](https://dobon.net/vb/dotnet/programing/displayprogress.html)

  • Update()を使う方法
//ProgressBar1の値を変更する (非同期がデフォルト)
ProgressBar1.Value = i;
//Label1のテキストを変更する
Label1.Text = i.ToString();

//Label1を再描画する
Label1.Update();
//(フォーム全体を再描画するには、次のようにする)
//this.Update();
  • BackgroundWorkerを使う方法 – ユーザーがキャンセルできるようにする
  • Threadクラスを使用したスレッド化による方法 – ユーザーがキャンセルできるようにする

BeginInvoke

c private void button_StartRecording_Click(object _s, EventArgs _e) { StartRecording(); // 開始時に間隔を指定する var timer = new System.Timers.Timer(100/*msec*/); // Elapsedイベントにタイマー発生時の処理を設定する timer.Elapsed += (sender, e) => { try { timer.Stop(); // もしくは timer.Enabled = false; // 何らかの処理 Debug.WriteLine($"rms: {rms}"); progressBar_AudioMeter.BeginInvoke(new Action(() => { //float value = (float)Math.Log10(rms + 0.001); progressBar_AudioMeter.Value = (int)(audioVolumeMax * 100.0); //UIスレッドで実行すべき処理 })); } finally { timer.Start(); // もしくは timer.Enabled = true; } }; // タイマーを開始する timer.Start(); }

c.sharp/非同期_プログレスバー.1524571398.txt.gz · 最終更新: 2018/04/24 12:03 by fifi