クラスを使用して DateTime を変更し、TimeSpan を使用して X 時間、Y 分、Z 秒を DispatchTimer で毎秒 WPF ラベルに表示しています。コード自体は適切なタイムスパンを提供しますが、DispatchTimer は間違った出力を提供しています。ここで何が起こっているのかについての情報を得ることができますか?
ModifiedTime Minutes プロパティは、デバッグの中断中に引き続きクエリされます (ModifiedTime.Minutes にカーソルを合わせると、数値が増え続けます)。これは標準ですか?
ランタイム出力は 3 分で始まり、8 分、13、18、23、28 などと表示されます。
としょうかん:
public Clock() {
load_ = DateTime.Now;
time_ = new DateTime();
time_ = DateTime.Now;
modifiedTime_ = new DateTime();
modifiedTime_ = DateTime.Now;
difference = TimeSpan.Zero;
}
public TimeSpan ModifiedTime {
//Convert the real time to timespan.
//display X Years, Y Days, Z Hours...
get {
modifiedTime_ = modifiedTime_.AddMinutes(1.0);
difference = modifiedTime_.Subtract(time_);
return difference;
}
set { difference = value; }
}
WPF:
DispatcherTimer dispatcherTimer;
public MainWindow() {
InitializeComponent();
dispatcherTimer = new DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = new TimeSpan(0, 0, 1);
dispatcherTimer.Start();
}
private void dispatcherTimer_Tick(object sender, EventArgs e) {
lblModTime.Content = clock.ModifiedTime.Hours + " hours, " + clock.ModifiedTime.Minutes + " minutes, " + clock.ModifiedTime.Seconds + " seconds, " + clock.ModifiedTime.Milliseconds + " milliseconds.";
}