C# TimeSpan和DispatchTimer

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_ =

我正在使用一个类来修改日期时间,并使用TimeSpan来使用DispatchTimer每秒向WPF标签显示X小时、Y分钟、Z秒。代码本身给出了正确的时间跨度,但是DispatchTimer给出了错误的输出。我能了解一下这里的情况吗

调试中断期间仍在查询ModifiedTime Minutes属性(将鼠标悬停在ModifiedTime上。分钟数不断增加),这是正常情况吗

运行时输出从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:


如果我理解正确的话,您希望在每过一秒的开始时间上增加一分钟。因此,以秒为单位计算差值,然后将其作为新时间开始的分钟数

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);
    }
}