您可以使用计时器,也可以只跟踪上次写入输出的时间。计时器可能更好,因为您的主要功能不会阻止它运行,而其他功能则会阻止它运行。

我使用随机的方法来模拟一个事实,那就是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);

}

}