您可以使用计时器,也可以只跟踪上次写入输出的时间。计时器可能更好,因为您的主要功能不会阻止它运行,而其他功能则会阻止它运行。
我使用随机的方法来模拟一个事实,那就是while循环并不总是在相同的时间内运行,以演示两种方法之间的区别。
代码语言:javascript复制var r = new Random();
var t = new System.Timers.Timer() { Interval = 1500 };
t.Elapsed += (s, e) =>
Console.WriteLine(DateTime.Now.TimeOfDay);
t.Start();
while (true)
{
Thread.Sleep(r.Next(500, 1000));
Console.WriteLine("doing stuff");
}代码语言:javascript复制var r = new Random();
var prev = DateTime.Now;
var interval = 1500;
while (true)
{
Thread.Sleep(r.Next(500, 1000));
Console.WriteLine("doing stuff");
var now = DateTime.Now;
if (prev.AddMilliseconds(interval) >= now)
{
prev = DateTime.Now;
Console.WriteLine(DateTime.Now.TimeOfDay);
}
}
!