Pregunta

he estado tratando de localizar a un error que creía que era relacionado hilo, pero creo que en su lugar hay un problema con la manera en que yo estoy usando Cronómetro de OpenNETCF. Estoy utilizando OpenNETCF.IoC en mi solicitud, pero en aras de la simplicidad moví el siguiente código directamente en una Ver:

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

Para acortar una larga historia, mirando el cronómetro en el depurador, los únicos valores que se actualizan cada vez son ElapsedTicks, mElapsed, mStartPerfCount. Todo lo demás es siempre cero. ¿Es este comportamiento esperado? ¿Es necesario que llame a un método adicional para que el cronómetro calcular la estructura transcurrido? (Nota: stopwatch.ElapsedMilliseconds es también cero)

¿Fue útil?

Solución

Sí, que parece ser un error, específicamente en Stopwatch.cs, línea 136.

Se lee actualmente:

smFreqInTicks = (MILLIS_IN_TICKS * 1000) / freq;

debe decir:

smFreqInTicks = (MILLIS_IN_TICKS * 1000d) / freq;

En este momento smFreqInTicks termina siendo siempre cero, que mata a los valores que se encuentra en el mercado.

Otros consejos

¿Por qué no utilizar la versión en el propio Compact Framework? Está en no partir de la versión 3.5 en adelante ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top