C# OpenNETCF.秒表->;只有滴答声在变化,没有消失

C# OpenNETCF.秒表->;只有滴答声在变化,没有消失,c#,windows-mobile,compact-framework,opennetcf,opennetcf.ioc,C#,Windows Mobile,Compact Framework,Opennetcf,Opennetcf.ioc,我一直在努力追踪一个我认为与线程相关的bug,但我认为我使用OpenNETCF的秒表的方式存在问题。我正在应用程序中使用,但为了简单起见,我将以下代码直接移动到视图中: public partial class WorkoutView : SmartPart { ... private Stopwatch stopwatch; public WorkoutView() { ... stopwatch = new Stopwatch(); stopwatch.Reset

我一直在努力追踪一个我认为与线程相关的bug,但我认为我使用OpenNETCF的秒表的方式存在问题。我正在应用程序中使用,但为了简单起见,我将以下代码直接移动到视图中:

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.elapsedmillesons也为零)

是的,它似乎是一个bug,特别是在stopwatch.cs的第136行

目前案文如下:

smFreqInTicks = (MILLIS_IN_TICKS * 1000) / freq;
应改为:

smFreqInTicks = (MILLIS_IN_TICKS * 1000d) / freq;

现在,SMFrequenticks始终为零,这会杀死您正在查看的值。

为什么不在Compact框架本身中使用该版本?它是从3.5版开始的…

感谢您的回复!你有没有可能在不久的将来发布一个错误修复版本?我目前正在使用社区SDF,所以很遗憾,我无法访问源代码来制作自己的补丁。感谢您指出这一点。我还没来得及测试CF.Net版本,但如果没有问题,我会改用它。