详解C# 控制台倒计时


本文摘自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;

            //控制台高度25是最低

            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#实现在listview中插入图片的示例代码分享

详细介绍C#实现关闭子窗口而不释放子窗口对象的方法分享

C#学习记录:编写高质量代码改善整理建议1-3

c#中var和dynamic之间的区别是什么?

C# 实现 cachehelper

C#动态对象dynamic实现方法和属性动态代码详解

详细介绍用C#描述数据结构0:导图

asp.net实现分页(非控件,输出html代码)

关于C#中方法的阐述

采用 C# 编写的学委助手详解及实例

更多相关阅读请进入《C#》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...