我有一個關於.net框架中的Stopwatch類的問題。我想衡量(在遊戲時間)循環重複,需要的時間秒錶:測量時間並立即重新啓動,無競賽狀況
Stopwatch timer = new Stopwatch();
timer.Start(); // Edited this in, forgot about that
while(true)
{
var timespan = timer.Elapsed;
timer.Restart();
// do something with the timespan
// Do some work here
}
我擔心的是,測量和重啓上下文切換可能發生,一些「時間」之間會丟失。 有沒有人知道以原子方式測量和重啓計時器的方法?
編輯:沒有秒錶的解決方案,也歡迎
把timer.start放在上面的while循環中,timer.stop在bellow中,並且創建時間跨度變量= timer.Ellapsed,如果它要記錄while循環時間。 – terrybozzio
我不想測量整個while循環,但只是每次迭代。這用於遊戲循環,並且可能不重要的是「上下文切換時間」不在其中。這只是我希望儘可能精確。想一想:如果我的線程優先級低,並且高優先級的線程啓動,並且我的低優先級在2分鐘內沒有任何cpu循環或者什麼東西(剛剛編譯:),那該怎麼辦)。這會影響很多測量。 – Nogiax