繁体   English   中英

Thread.Sleep-如何以正确的方式使用它?

[英]Thread.Sleep - how to use it in a proper way?

System.Threading.thread.Sleep(1000); 暂停整个程序1秒钟,但是当此秒结束时,它会执行这段时间内可以执行的所有操作。 例如:

Thread.Sleep(1000);
Console.WriteLine("A");
Thread.Sleep(1000);
Console.Writeline("B");

它将等待两秒钟并写入

一种

如何正确使用暂停?

如果您希望每秒发生某件事,请创建一个计时器。 例如:

private System.Threading.Timer _timer;

void main()
{
    _timer = new Timer(TimerTick, null, 1000, 1000);
    // do other stuff in your main thread
}

void TimerTick(object state)
{
    // do stuff here
}

有几种不同类型的计时器。 如果您正在编写控制台程序,则建议使用System.Threading.Timer 在Windows Forms应用程序中,可以使用System.Windows.Forms.TimerSystem.Timers.Timer 有关更多信息,请参见计时器

Thread.Sleep()行为与您想象的一样; 它只是将当前线程暂停大约给定的毫秒数。

这里的问题是在每次调用Write时,标准输出流不一定刷新到控制台(或指向它的任何地方)。 取而代之的是,它可以缓冲某些内容,以便将其更大的部分写出来以提高效率。 尝试调用Console.Out.Flush() ; 在每个WriteLine()之后,您应该看到期望的结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM