前提・実現したいこと
ボタンをおして、テキストボックス①にテキストを表示
2秒後にテキストボックス②にテキスト表示したい。
発生している問題・エラーメッセージ
テキスト表示→2秒待機→テキスト表示が実現したいが、実際は
2秒待機→テキスト表示→テキスト表示になってしまう
該当のソースコード
C#
1 2 3 private void button1_Click(object sender, EventArgs e) 4 { 5 textBox1.Text = "123"; 6 7 Thread.Sleep(2000); 8 9 textBox2.Text = "456"; 10 }
Thread.Sleep を使っているからです。textBox1.Text に文字列を入れただけでは表示されません。文字列を入れることによってメッセージが飛ばされ、それを受け取ることで表示されますが、スレッドが止まっているために受け取ることができません。
void button1_Click を async void button1_Click に変更し、Thread.Sleep(2000) の代わりに await Task.Delay(2000); で表示できます。
C# のバージョンが古ければこの手は使えないのでタイマーを使うなりメッセージを処理するなりしてください。
回答2件
あなたの回答
tips
プレビュー