2

スレッドに関連していると思われるバグを追跡しようとしてきましたが、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 だけです。それ以外は常にゼロです。これは予想される動作ですか?ストップウォッチで Elapsed 構造体を計算するには、追加のメソッドを呼び出す必要がありますか? (注: stopwatch.ElapsedMilliseconds もゼロです)

4

2 に答える 2

2

はい、これはバグのようです。具体的には Stopwatch.cs の 136 行目です。

それは現在読んでいます:

smFreqInTicks = (MILLIS_IN_TICKS * 1000) / freq;

それは読むべきです:

smFreqInTicks = (MILLIS_IN_TICKS * 1000d) / freq;

現在、smFreqInTicks は常に 0 になり、見ている値が殺されます。

于 2010-04-01T04:22:47.533 に答える
1

Compact Framework 自体でバージョンを使用しないのはなぜですか? バージョン 3.5 以降含まれています...

于 2010-04-03T23:29:20.570 に答える