FiFiWiki2

FiFiWikiの第2版

ユーザ用ツール

サイト用ツール


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

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
c.sharp:非同期_プログレスバー [2018/02/22 13:36]
fifi
c.sharp:非同期_プログレスバー [2018/04/24 12:03] (現在)
fifi
ライン 1: ライン 1:
  
-[時間のかかる処理の進行状況を表示する - .NET Tips (VB.NET,​C#​...)](https://​dobon.net/​vb/​dotnet/​programing/​displayprogress.html)+[時間のかかる処理の進行状況を表示する - .NET Tips (VB.NET,​C#​...)](https://​dobon.net/​vb/​dotnet/​programing/​displayprogress.html)
  
 - Update()を使う方法 - Update()を使う方法
  
-```+```c
 //​ProgressBar1の値を変更する (非同期がデフォルト) //​ProgressBar1の値を変更する (非同期がデフォルト)
 ProgressBar1.Value = i; ProgressBar1.Value = i;
ライン 23: ライン 23:
 -- ユーザーがキャンセルできるようにする -- ユーザーがキャンセルできるようにする
  
 +
 +# 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/非同期_プログレスバー.1519306619.txt.gz · 最終更新: 2018/02/22 13:36 by fifi