嘿,最近,我一直在試圖找到很好的方法來平滑線程睡眠(因爲它受到干擾或者如果你的電腦滯後等)。JAVA的System.currentTimeMillis()或C#的Environment.TickCount?
那麼這是一個整體「更好的性能」方法?
JAVA的System.currentTimeMillis的()爲C#方法:
public static double GetCurrentMilliseconds()
{
DateTime staticDate = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
TimeSpan timeSpan = DateTime.UtcNow - staticDate;
return timeSpan.TotalMilliseconds;
}
System.currentTimeMillis的()中使用:
public void Run()
{
this.lastUpdate = TimeUtilities.GetCurrentMilliseconds();
while (isRunning)
{
if (TimeUtilities.GetCurrentMilliseconds() - lastUpdate >= 600)
{
lastUpdate = TimeUtilities.GetCurrentMilliseconds();
// bla bla bla...
}
try
{
Thread.Sleep(100);
}
catch (Exception ex)
{
Jolt.GetLog().WriteException(ex);
}
}
}
和C#的Environment.TickCount:
private void Run()
{
double lastUpdate = Environment.TickCount;
while (isRunning)
{
if (lastUpdate + 600 < Environment.TickCount)
{
lastUpdate = Environment.TickCount;
// bla bla bla...
}
try
{
Thread.Sleep(100);
}
catch (Exception ex)
{
Jolt.GetLog().WriteException(ex);
}
}
}
不限幫助將不勝感激。否則,如果這是一個壞主意,請你提供一個更好的方法來做到這一點。
感謝隊友,這可能是我需要的答案。 – TheAJ 2009-09-05 06:33:29
Tiny評論:如果你考慮TickCount是一個無符號的int,那麼它不會翻轉到48天。 – RenniePet 2015-09-30 02:18:25