猿问

如何将计时器添加到C#控制台应用程序

如何将计时器添加到C#控制台应用程序

就是这样 - 如何在C#控制台应用程序中添加计时器?如果你能提供一些示例编码会很棒。



潇湘沐
浏览 905回答 3
3回答

吃鸡游戏

这非常好,但是为了模拟一些时间的流逝,我们需要运行一个需要一些时间的命令,这在第二个例子中非常清楚。但是,使用for循环来执行某些功能的风格永远需要大量的设备资源,而我们可以使用垃圾收集器来做这样的事情。我们可以在同一本书CLR Via C#Third Ed的代码中看到这种修改。using&nbsp;System;using&nbsp;System.Threading;public&nbsp;static&nbsp;class&nbsp;Program&nbsp;{ &nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;Main()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Create&nbsp;a&nbsp;Timer&nbsp;object&nbsp;that&nbsp;knows&nbsp;to&nbsp;call&nbsp;our&nbsp;TimerCallback &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;method&nbsp;once&nbsp;every&nbsp;2000&nbsp;milliseconds. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Timer&nbsp;t&nbsp;=&nbsp;new&nbsp;Timer(TimerCallback,&nbsp;null,&nbsp;0,&nbsp;2000); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Wait&nbsp;for&nbsp;the&nbsp;user&nbsp;to&nbsp;hit&nbsp;<Enter> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.ReadLine(); &nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;void&nbsp;TimerCallback(Object&nbsp;o)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Display&nbsp;the&nbsp;date/time&nbsp;when&nbsp;this&nbsp;method&nbsp;got&nbsp;called. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine("In&nbsp;TimerCallback:&nbsp;"&nbsp;+&nbsp;DateTime.Now); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Force&nbsp;a&nbsp;garbage&nbsp;collection&nbsp;to&nbsp;occur&nbsp;for&nbsp;this&nbsp;demo. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GC.Collect(); &nbsp;&nbsp;&nbsp;}}

紫衣仙女

这是创建简单的一秒计时器滴答的代码:&nbsp;&nbsp;using&nbsp;System; &nbsp;&nbsp;using&nbsp;System.Threading; &nbsp;&nbsp;class&nbsp;TimerExample &nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;public&nbsp;void&nbsp;Tick(Object&nbsp;stateInfo) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine("Tick:&nbsp;{0}",&nbsp;DateTime.Now.ToString("h:mm:ss")); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;void&nbsp;Main() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TimerCallback&nbsp;callback&nbsp;=&nbsp;new&nbsp;TimerCallback(Tick); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine("Creating&nbsp;timer:&nbsp;{0}\n",&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DateTime.Now.ToString("h:mm:ss")); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;create&nbsp;a&nbsp;one&nbsp;second&nbsp;timer&nbsp;tick &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Timer&nbsp;stateTimer&nbsp;=&nbsp;new&nbsp;Timer(callback,&nbsp;null,&nbsp;0,&nbsp;1000); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;loop&nbsp;here&nbsp;forever &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(;&nbsp;;&nbsp;) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;add&nbsp;a&nbsp;sleep&nbsp;for&nbsp;100&nbsp;mSec&nbsp;to&nbsp;reduce&nbsp;CPU&nbsp;usage &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Thread.Sleep(100); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;}这是结果输出:&nbsp;&nbsp;&nbsp;&nbsp;c:\temp>timer.exe&nbsp;&nbsp;&nbsp;&nbsp;Creating&nbsp;timer:&nbsp;5:22:40 &nbsp;&nbsp;&nbsp;&nbsp;Tick:&nbsp;5:22:40 &nbsp;&nbsp;&nbsp;&nbsp;Tick:&nbsp;5:22:41 &nbsp;&nbsp;&nbsp;&nbsp;Tick:&nbsp;5:22:42 &nbsp;&nbsp;&nbsp;&nbsp;Tick:&nbsp;5:22:43 &nbsp;&nbsp;&nbsp;&nbsp;Tick:&nbsp;5:22:44 &nbsp;&nbsp;&nbsp;&nbsp;Tick:&nbsp;5:22:45 &nbsp;&nbsp;&nbsp;&nbsp;Tick:&nbsp;5:22:46 &nbsp;&nbsp;&nbsp;&nbsp;Tick:&nbsp;5:22:47编辑:将硬自旋循环添加到代码中永远不是一个好主意,因为它们消耗CPU周期而没有增益。在这种情况下,添加循环只是为了阻止应用程序关闭,允许观察线程的操作。但为了正确起见并减少CPU使用,在该循环中添加了一个简单的Sleep调用。
随时随地看视频慕课网APP
我要回答