私は理由を探していましたが、stackoverflow に関するすべてのトピックについて、ビジー状態の UI が理由として示唆されていました。テスト用の非常に基本的なコードがあり、他のことをするのに忙しいはずはないと確信していても、UI を更新しません。
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
static double t = 0;
static double dt = 0.1;
private void button1_Click(object sender, RoutedEventArgs e)
{
Timer timer = new Timer(5000);
timer.Enabled = true;
timer.Elapsed += new ElapsedEventHandler(Update);
timer.Start();
}
void Update(object sender, ElapsedEventArgs e)
{
t = t + dt;
testBlock1.Text = (t).ToString();
}
}
デバッグしてtextBlock1.Text
更新にブレークポイントを設定したところ、5 秒ごとに中断されましたが、UI は更新されません。コードでわかるように、タイマーを開始するために使用するの上にマウスを移動するButton
と、ボタンは典型的な「マウス オーバー ボタン」アニメーションを表示します。テキストの更新ではなく、なぜそれが起こるのですか?
ここで私の質問を削除しますが、UI が忙しくなくてもこのアプローチが UI を更新しない理由を説明するトピックが見つかりませんでした。そうしないと。