ホームページ  >  記事  >  バックエンド開発  >  C#コンソールカウントダウンの詳しい説明

C#コンソールカウントダウンの詳しい説明

迷茫
迷茫オリジナル
2017-03-26 14:56:564246ブラウズ

何年も前に私とよくチャットしていた偉い人のグループの誰かが、仕事を終える時間と休暇を計算するためにフォームにカウントダウンを書きました:)

それは私のような仕事のない人々を単に嘲笑しているだけです、ハハハ

フォームのカウントダウンは非常に優れています。主に、十分にクールではなく、プログラマーとしてのアイデンティティを反映できないため、技術的な内容はありません。

それでは何がカッコいいのでしょうか?それはコンソールに違いありません!

テレビシリーズのハッカーがパチパチとスクロールするシーンはとてもクールです!

そこで、コンソールで時間を計る方法を勉強しました。

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。