-2

DispatcherTimer を使用せずに現在の時刻を表示する他のオプションはありますか? 残念ながら、アプリは低速の PC で実行する必要があり、DispatcherTimer はメモリ使用量を継続的に増加させます。私は WPF パフォーマンス プロファイリング ツールでそれを確認しましたが、それは本当です - 1 秒のタイムスパンでの CPU 使用率は ~5-15% です。そして、クラスを使用して時間値を取得し、それをラベルに表示するため、表示するメソッドが xaml で生成されたコントロールなしで実行できると便利です。

ありがとう!

@編集:

DispatcherTimer dispatcherTimer = new DispatcherTimer(); 
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick); 
dispatcherTimer.Interval = new TimeSpan(0, 0, 0); 
dispatcherTimer.Start(); 

そしてティックするとき:

private void dispatcherTimer_Tick(object sender, EventArgs e) 
{ 
lbl.Content = DateTime.Now.ToString("F"); 
// lbl is static label which i create once and show i several windows. 
}
4

1 に答える 1

4

あなたのインターバルはゼロです。UI を 1 秒間に 10 回以上更新する必要があるのはなぜですか? 変更がそれほど頻繁に行われる場合、その変更を処理できる人間はいません。デフォルトでは、WPF は画面を 1 秒間に 60 回しか更新しないため、間隔は少なくとも 1000/60 = 16.6 ミリ秒にする必要があります。ただし、250ms 程度の高さで十分であると私は主張します。

于 2013-06-03T14:19:43.510 に答える