さて、私はこのtimer
コントロールを持っています。プログラムを開始すると問題なく動作しますが、フォームを最大化または最小化すると、タイマー コントロールが機能しなくなります。何も更新されませんか?これがコードです
public MainForm()
{
InitializeComponent();
var tm =
new System.Threading.Timer(state => statusDateTimeLabel.Text = DateTime.Now.ToLocalTime().ToString(CultureInfo.InvariantCulture), null, TimeSpan.FromMilliseconds(0),
TimeSpan.FromMilliseconds(1000));
}
ラベルが更新されないこともあれば、更新されることもあります。しかし、主な問題は、フォームを最大化し、再度復元すると、時間の更新が停止することです。誰が私が間違っているのか説明してもらえますか?
明確でない場合、ステータス バーにこのラベル コントロールがあり、そのラベルに現在の日時を表示したいと考えています。
このスレッドが別のことで忙しいのかもしれないと思って、これも試してみました
public MainForm()
{
InitializeComponent();
ThreadPool.QueueUserWorkItem(delegate(object state)
{
new System.Threading.Timer(
stateObj =>
statusDateTimeLabel.Text =
DateTime.Now.ToLocalTime().ToString(CultureInfo.InvariantCulture),
null, TimeSpan.FromMilliseconds(0),
TimeSpan.FromMilliseconds(1000));
});
}
しかし、これも上記と同じように機能し、更新される場合と更新されない場合があります。フォームを最大化したり、サイズを変更したりすると、更新が停止するのでしょうか? 誰でも問題が何であるかを理解するのを手伝ってもらえますか?