Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung des C#-Konsolen-Countdowns

Detaillierte Erläuterung des C#-Konsolen-Countdowns

迷茫
迷茫Original
2017-03-26 14:56:564203Durchsuche

Jemand aus der Big-Boss-Gruppe, mit der wir vor Jahren oft gechattet haben, hat ein Countdown-Formular geschrieben, um die Zeit bis zum Feierabend und in den Urlaub zu berechnen:)

Es macht nur Spaß über Leute wie mich, die keins haben Job, hahaha

Der Countdown in der Form ist ziemlich untechnisch, vor allem weil er nicht cool genug ist und unsere Identität als Programmierer nicht widerspiegeln kann.

Was bedeutet es also, cool zu sein? Es muss eine Konsole sein!

Die Szenen, in denen Hacker in der Fernsehsendung knistern und scrollen, sind so cool!

Also habe ich ein wenig recherchiert, wie man es auf der Konsole zeitlich festlegt.

Baidu kam zum alten Beitrag von msdn und alle Antworten verwendeten Threads. Dann verwenden Sie Threads.

Die Haupt-Timing-Methode besteht darin, die Thread.Sleep(1000);-Methode zu verwenden, um den Haupt-Thread für eine Sekunde anzuhalten.

Dann durchlaufen Sie eine Schleife, um die Parameterübergabemethode aufzurufen. Thread thread = new Thread(delegate() { GetTime(dt); });

Diese Methode berechnet die Zeitdifferenz und gibt dann die aus Zeit.

Auf diese Weise wird ein Fehler behoben (seien Sie vorsichtig und erstellen Sie Fehler mit Bedacht). Obwohl Sie die Zeit berechnen und ausgeben, wird es im Grunde nicht viel Zeit in Anspruch nehmen Hunderte Male und Tausende Male Danach geht eine Sekunde in den beiden Ausgabezeiten verloren, was jedoch für das Endergebnis keine Rolle spielt.

(Im Nachhinein sollte es möglich sein, die Methode ohne Thread aufzurufen, Hauptsache Thread.Sleep(1000);)

Console.ForegroundColor = ConsoleColor.Green ; Ändern Sie das Ausgabezeichen. Die Farbe ist grün.
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.SetCursorPosition(8, 5); ist eine Anweisung, die die Position des Cursors ändert und das 8. Zeichen der 5. Zeile des Cursors darstellt. Zu diesem Zeitpunkt wird die Ausgabe hier ausgegeben.

Das Ausgabeergebnis liegt immer noch im ursprünglichen detaillierten Zeitformat vor, wird aber mit geringfügigen Änderungen schöner. Hier sind einige Ausgabeanweisungen zur Zeit.

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des C#-Konsolen-Countdowns. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn