外部ソースから大量のデータを読み取るループがあります。このプロセスには約20秒かかりますが、進行状況をユーザーに表示したいと思います。派手なプログレスバーは必要ないので、「ステップ1/1000」というラベルに進行状況をプロットしてから、「ステップ2/1000」などに変更することにしました。
私のコードは次のようになります。
// "count" is the number of steps in the loop,
// I receive it in previous code
String countLabel = "/"+count.ToString();
for (i = 0; i < count; i++)
{
... do analysis ...
labelProgress.Content = "Step "+i.ToString()+countLabel
}
ただし、その分析中、画面は「スタック」しており、進行状況は進行中として表示されません。私はC++での過去からこの動作を理解しています。おそらく、ループからの通知を受信するプログレスバーを表示する別のスレッド、または何らかの形式の再描画/更新、またはウィンドウ/アプリにメッセージキューの処理を強制するスレッドがあります。
C#でそれを行う正しい方法は何ですか?私はラベルに縛られていないので、このラベルの代わりに使用できる単純なプログレスバーのポップアップ画面があれば、それも素晴らしいでしょう...
ありがとう