本文摘自PHP中文网,作者迷茫,侵删。
年前经常聊天的大佬群里有人写了窗体的倒计时来计算下班时间和放假时间:)简直就是在嘲讽我这种没有工作的人,哈哈哈
窗体的倒计时相当的没有技术含量,主要是不够炫酷,不能够体现我们程序员的身份。
那什么才叫炫酷?必须是控制台啊!
电视剧上黑客噼里啪啦噼里啪啦滚屏的画面多炫酷!
所以,研究了一下怎么样在控制台上计时。
百度到了msdn的老帖子,所有的回答都是使用线程。那就用线程吧。
主要的计时方法就是使用 Thread.Sleep(1000); 方法,使主线程停止一秒。
然后循环使用线程调用传参方法 Thread thread = new Thread(delegate() { GetTime(dt); });
这个方法计算时间差然后输出时间。
这样就会完成一个bug(比心,用心创造BUG),虽然计算一下时间,再输出,基本上是用不了多少时间的,
但是几百次几千次以后就会导致两次输出时间里少了一秒,但对于最后的结果来说并无大碍。
(后知后觉,不用线程调用方法应该也可以,主要还是Thread.Sleep(1000);)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace Timer
{
class Program
{
static bool isEnd = false ;
static void Main( string [] args)
{
Console.Title = "Timer" ;
Console.WindowWidth = 50;
Console.BufferHeight = 25;
Console.WriteLine( "现在的时间是" );
Console.WriteLine(DateTime.Now);
Console.WriteLine( "输入截至时间" );
DateTime dt = Convert.ToDateTime(Console.ReadLine());
DateTime dtNow = Convert.ToDateTime(DateTime.Now);
while (isEnd == false )
{
Thread thread = new Thread( delegate () { GetTime(dt); });
thread.Start();
Thread.Sleep(1000);
}
Console.ReadLine();
}
static void GetTime(DateTime dt)
{
DateTime dtNow = Convert.ToDateTime(DateTime.Now);
TimeSpan ts = dt - dtNow;
Console.ForegroundColor = ConsoleColor.Green;
Console.SetCursorPosition(8, 5);
Console.WriteLine(ts);
if (ts.TotalSeconds <= 1)
{
Console.SetCursorPosition(0, 9);
Console.WriteLine( "计时已完成" );
isEnd = true ;
}
}
}
}
|
Console.ForegroundColor = ConsoleColor.Green; 改变输出字符的颜色为绿色。
阅读剩余部分
相关阅读 >>
C#多线程编程实例-线程与窗体交互的代码分析
几个优秀的java和C#代码转换工具
C#用什么软件编程?
C#基础入门之算法-交换的代码示例
C#开发实例-订制屏幕截图工具(二)创建项目、注册热键、显示截图主窗口
C#实现带百分比的进度条功能的示例代码分享
C#二进制字节数组操作函数 截取字节数组subbyte的示例代码
【C#教程】C# 循环
教你用C#制作最简单的登录界面
C#实现char字符数组与字符串相互转换的方法详解
更多相关阅读请进入《C#》频道 >>
清华大学出版社
作者:[美]克里斯琴·内格尔(Christian Nagel)著。出版时间:2019年3月。
转载请注明出处:木庄网络博客 » 详解C# 控制台倒计时