概述
有些时候,我们会希望到某个时间了再执行某个功能,比如晚上12点的时候,以下代码就可以粗略的实现该功能(之所以说粗略,是因为当前代码并没有把时间的限制精确到那么准)
当然,如果你希望时间再准一些,我觉得可以在现有代码上再多几层嵌套,从外到内每一层对时间的筛选细度和线程休眠时间可以越来越小,这样,while里面的代码并不会执行特别多的次数,但对时间的控制又可以更加精确。(恩,应该是这样的!)
代码
//DateTime day = new DateTime(2018, 12, 15); DateTime day = new DateTime(2018, 12, 12, 16, 42, 0); Console.WriteLine($"while前 时间:{DateTime.Now.ToString()}"); while (true) { DateTime now = DateTime.Now; if (now.AddSeconds(-15) < day && now >= day) { break; } else { System.Threading.Thread.Sleep(5000); //如果还没到时间,5秒后再来一次 } } Console.WriteLine($"while后 时间:{DateTime.Now.ToString()}");
又想了一下,其实可以直接两个时间相减,然后根据时间差来决定休眠多久(不知道把休眠时间设置得特别长会怎样,如果这样不好的话可以根据时间差与小时、分钟的大小来设置休眠时间)