>  기사  >  백엔드 개발  >  C# 콘솔 카운트다운에 대한 자세한 설명

C# 콘솔 카운트다운에 대한 자세한 설명

迷茫
迷茫원래의
2017-03-26 14:56:564246검색

몇 년 전 자주 대화를 나눴던 대장님이 퇴근 시간과 휴가 시간을 계산하기 위해 카운트다운 양식을 작성해 주셨네요 :)

나처럼 돈 없는 사람들을 비웃는 것뿐이다. job, hahaha

양식의 카운트다운은 상당히 비기술적입니다. 그 이유는 주로 그것이 충분히 멋지지 않고 프로그래머로서 우리의 정체성을 반영할 수 없기 때문입니다.

그럼 멋있다는 건 무슨 뜻인가요? 콘솔이어야합니다!

TV시리즈에서 해커들이 삐걱거리고 스크롤하는 장면이 너무 멋지네요!

그래서 콘솔에서 시간을 측정하는 방법에 대해 몇 가지 조사를 했습니다.

Baidu는 msdn의 이전 게시물에 왔고 모든 답변은 스레드를 사용했습니다. 그런 다음 스레드를 사용하십시오.

주요 타이밍 방법은 Thread.Sleep(1000) 메서드를 사용하여 주 스레드를 1초 동안 중지하는 것입니다.

그런 다음 스레드를 반복하여 매개변수 전달 메서드를 호출합니다. Thread thread = new Thread(delegate() { GetTime(dt); });

이 메서드는 시간 차이를 계산한 다음 시간.

이렇게 하면 버그가 완성됩니다(주의해서 버그를 생성하세요). 시간을 계산해서 출력하더라도 기본적으로는 시간이 많이 걸리지 않습니다.

하지만. 수백번, 수천번을 반복하면 2번의 출력 시간에 1초의 손실이 발생하지만 최종 결과에는 문제가 되지 않습니다.

(돌이켜보면 스레드 없이 메서드를 호출하는 것이 가능해야 합니다. 주로 Thread.Sleep(1000);)

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; 문자는 녹색입니다.

Console.SetCursorPosition(8, 5); 커서의 위치를 ​​변경하는 명령문으로, 이때 커서의 5번째 줄의 8번째 문자가 출력됩니다.

출력 결과는 여전히 원래의 세부 시간 형식이지만 약간 수정하면 더 아름다워질 것입니다. 시간에 대한 몇 가지 출력 설명은 다음과 같습니다.

아아아아

위 내용은 C# 콘솔 카운트다운에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.