前提
Visual Studio 2022 で Windows Forms アプリを .NET 6.0で作成しています。
Timerはデザインのツールボックスから引っ張ってきたものです。
C#でフォームをロードしたときにメインの処理とは別スレッドで現在時刻を1秒ごとに更新して表示するシステムを作っています。
スレッドスタート→スレッド内でTime_Tickのスタートを行い画面の表示までは行ったのですが、肝心の画面表示後に1秒ごとに時間が更新されません。
こちら解決策等ございますでしょうか…。
ご教示いただけますと幸いです。
実現したいこと
・別スレッドでyyyy/MM/dd HH:mm:ssの形式でラベルに対して1秒ごとに時刻を表示したい
発生している問題・エラーメッセージ
画面表示後に現在時刻が1秒ごとに更新されない
該当のソースコード
private void Form1_Load(object sender, EventArgs e) { DateTime time = DateTime.Now; lblTime.Text = String.Format(time.ToString("yyyy/MM/dd ") + time.ToLongTimeString()); Thread timerClock = new Thread(new ThreadStart(TimerThread)); timerClock.Start(); //後続処理 } private void TimerThread() { Timer1.Interval = 1000;//1秒ごとに更新 Timer1.Start();//Timer1_Tickが実行されるはず } private void Timer1_Tick(object sender, EventArgs e) { DateTime time = DateTime.Now; lblTime.Text = String.Format(time.ToString("yyyy/MM/dd ") + time.ToLongTimeString()); } }
試したこと
1.lblTimeに現在時刻を表示し1秒ごとに更新(フォーマットは「yyyy/MM/dd HH:mm:ss」)を別スレッドで行いたいので、Timer_tickイベントを実行するスレッド「TimerThread」を作成
2.TimerThreadをフォームロードイベント内でnewしてスレッドをStart()で実行→TimerThread内のTimer1.Start();で画面が表示されたのですが、Timer1_Tickのイベントが始まらず、画面上の現在時刻が更新されません。