C# TimeSpan和DispatchTimer
我正在使用一个类来修改日期时间,并使用TimeSpan来使用DispatchTimer每秒向WPF标签显示X小时、Y分钟、Z秒。代码本身给出了正确的时间跨度,但是DispatchTimer给出了错误的输出。我能了解一下这里的情况吗 调试中断期间仍在查询ModifiedTime Minutes属性(将鼠标悬停在ModifiedTime上。分钟数不断增加),这是正常情况吗 运行时输出从3分钟开始,然后显示8分钟、13、18、23、28等 图书馆:C# TimeSpan和DispatchTimer,c#,timespan,C#,Timespan,我正在使用一个类来修改日期时间,并使用TimeSpan来使用DispatchTimer每秒向WPF标签显示X小时、Y分钟、Z秒。代码本身给出了正确的时间跨度,但是DispatchTimer给出了错误的输出。我能了解一下这里的情况吗 调试中断期间仍在查询ModifiedTime Minutes属性(将鼠标悬停在ModifiedTime上。分钟数不断增加),这是正常情况吗 运行时输出从3分钟开始,然后显示8分钟、13、18、23、28等 图书馆: public Clock() { load_ =
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:
如果我理解正确的话,您希望在每过一秒的开始时间上增加一分钟。因此,以秒为单位计算差值,然后将其作为新时间开始的分钟数
public TimeSpan ModifiedTime
{
get
{
TimeSpan elapsed = DateTime.Now - TimeStarted;
return TimeStarted.AddMinutes(elapsed.TotalSeconds);
}
}
好的,每次你叫clock.ModifiedTime。在dispatcher中(4次!)在修改后的时间上加上一分钟,还可能再加一次,以便在调试器中计算语句。这就解释了为什么你每次都要增加5的显示量。你能澄清一下你到底想做什么吗?基本上,我是在比较两个日期。一个是加载程序的tme,第二个将以每秒任意时间量递增。我试图显示两者之间的跨度。这就是问题所在,我实际上需要做的就是通过调用timespan对象捕捉WPF中的ModifiedTime。也就是说,在调用x.Minutes之前,在WPF中设置TimeSpan x=clock.ModifiedTime。
public TimeSpan ModifiedTime
{
get
{
TimeSpan elapsed = DateTime.Now - TimeStarted;
return TimeStarted.AddMinutes(elapsed.TotalSeconds);
}
}