JAVA';s System.currentTimeMillis()或C#和#x27;s环境。滴答数?
嘿,最近,我一直在试图找到好的方法来消除线程休眠(以防它受到干扰或者你的计算机出现延迟等) 那么,哪种方法总体上“性能更好” C#的JAVA System.currentTimeMillis()方法: System.currentTimeMillis()正在使用中: 和C#的环境。滴答数:JAVA';s System.currentTimeMillis()或C#和#x27;s环境。滴答数?,c#,java,C#,Java,嘿,最近,我一直在试图找到好的方法来消除线程休眠(以防它受到干扰或者你的计算机出现延迟等) 那么,哪种方法总体上“性能更好” C#的JAVA System.currentTimeMillis()方法: System.currentTimeMillis()正在使用中: 和C#的环境。滴答数: private void Run() { double lastUpdate = Environment.TickCount; while (isRunnin
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);
}
}
}
private void Run()
{
double lastUpdate=Environment.TickCount;
同时(正在运行)
{
如果(lastUpdate+600
任何帮助都将不胜感激。否则,如果这是一个坏主意,请您提供一个更好的方法来做到这一点。滴答声当然有更好的性能
在这个用例中,不需要计算当前时间的开销。您只关心经过的时间,因此在epoch是1970还是进程的开始时不会有任何区别。使用TickCount方法具有更好的性能,原因如下:
- 它是一个整数,不是一个多字节的数据结构
- 它是直接可用的,不需要进行各种计算
if (Environment.TickCount-lastUpdate > 600)
谢谢伙伴,这可能是我需要的答案。小评论:如果你认为TigkCalt是一个未签名的int,那么它不会滚动到48天。
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);
}
}
}
if (Environment.TickCount-lastUpdate > 600)