私のアプリケーションは C# Windows フォーム アプリケーションです。ユーザーが「生成」ボタンを押すと、私のアプリケーションは新しいスレッドを作成し、新しいプロセスを実行します。プロセスは以下の疑似コードのようになります
Loop counter = 1 to N
progressbar = counter/N
Display msg on label1
Do some tasks
Loop
progressbar = 100%
Display msg on lable1
プロセスバーとラベルのメッセージを委任しました。メッセージはループ内にあるときに問題なく表示されます。ラベルのテキストが変更されるたびに Application.DoEvents() を実行するイベントを追加しましたが、最後のメッセージは決して表示されません。最後のメッセージ ラベルの直後に Application.DoEvents() を配置しようとしましたが、解決策はありません。他の誰かがこれに遭遇しましたか?
みんな助けてくれてありがとう!
編集
これは私が最後のメッセージをコーディングした方法です(ループの後のもの)
this.BeginInvoke((MethodInvoker)delegate()
{
toolStripProgressBar1.Value = 100;
btnCancel.Enabled = false;
btnBrowse.Enabled = true;
btnSaveTo.Enabled = true;
btnGenerate.Enabled = false;
// Performance testing
lblGeneratingInfo.Text = "Generation Complete! Total Run time: " + DateTime.Now.Subtract(startDate).ToString();
});
修正済み: 表示しようとしたテキストが長すぎると思います...「Generating Complete: Total run time」を「Run time:」だけに置き換えたところ、o_o と表示されました