c.sharp:非同期_プログレスバー
[時間のかかる処理の進行状況を表示する - .NET Tips (VB.NET,C#...)](https://dobon.net/vb/dotnet/programing/displayprogress.html)
- snippet.c
//ProgressBar1の値を変更する (非同期がデフォルト)
ProgressBar1.Value = i;
//Label1のテキストを変更する
Label1.Text = i.ToString();
//Label1を再描画する
Label1.Update();
//(フォーム全体を再描画するには、次のようにする)
//this.Update();
BeginInvoke
- snippet.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/非同期_プログレスバー.txt · 最終更新: 2018/04/24 12:03 by fifi