2

我一直在試圖追蹤一個我認爲是線程相關的bug,但是我認爲相反,我使用OpenNETCF的秒錶的方式存在問題。我在我的應用程序中使用OpenNETCF.IoC,但是爲了簡單起見,我把下面的代碼直接進入一個觀點:OpenNETCF.Stopwatch - >只有刻度發生變化,沒有經過

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也爲零)

回答

2

是的,這似乎是一個錯誤,特別是在Stopwatch.cs,管線136

目前,它寫道:

smFreqInTicks = (MILLIS_IN_TICKS * 1000)/freq; 

應該讀:

smFreqInTicks = (MILLIS_IN_TICKS * 1000d)/freq; 

現在smFreqInTicks結束始終爲零,這會殺死您正在查看的值。

+0

感謝您的迴應!你有可能很快就會發布bug修復版嗎?我目前正在使用Community SDF,所以很遺憾我無法訪問源代碼來創建我自己的補丁。 – pithyless 2010-04-01 10:25:55

1

爲什麼不在Compact Framework本身中使用該版本?它從版本3.5起there ...

+0

感謝您指出這一點。還沒有開始測試CF.Net版本,但如果沒有問題,我會切換。 – pithyless 2010-04-07 14:33:42

相關問題