我一直想追查我认为是线程相关的错误,但我想取而代之的是我使用OpenNETCF的秒表的方式的问题。我直接使用 OpenNETCF.IoC 在我的应用程序,但是为了简单起见,我把下面的代码到一个视图:

public partial class WorkoutView : SmartPart
{
 ...
 private Stopwatch stopwatch; 
 public WorkoutView()
 {  ...
    stopwatch = new Stopwatch();
    stopwatch.Reset();
    stopwatch.Start(); 

    WorkoutDisplayTimer = new Timer();
    WorkoutDisplayTimer.Interval = 500;
    WorkoutDisplayTimer.Tick += new EventHandler(WorkoutDisplayTimer_Tick);
    WorkoutDisplayTimer.Enabled = true;
 }
 void WorkoutDisplayTimer_Tick(object sender, EventArgs e)
 { ...
   stopwatch.Stop();
   lbl.Text = stopwatch.ElapsedTicks.ToString() + "NOT WORKING: " + stopwatch.Elapsed.ToString();
   stopwatch.Start();
  }
  ...
}

长话短说,看在调试器秒表,曾经得到更新的值只有ElapsedTicks,mElapsed,mStartPerfCount。其他一切始终为零。这是预期的行为?我需要调用一个额外的方法有秒表计算经过的结构? (注:stopwatch.ElapsedMilliseconds也为零)

有帮助吗?

解决方案

是的,这似乎是一个错误,特别是在Stopwatch.cs,线136。

有当前读取:

smFreqInTicks = (MILLIS_IN_TICKS * 1000) / freq;

它应显示为:

smFreqInTicks = (MILLIS_IN_TICKS * 1000d) / freq;

现在smFreqInTicks最终是始终为零,它可以杀死你正在寻找的值。

其他提示

为什么不能用在紧凑型框架本身的版本?这是一个在从3.5版本起...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top