【C#入門】停止は「Thread.Sleep」よりも「Task.Delay」を使う

こんにちは!エンジニアの中沢です。

C#には一定時間処理を停止するための「Sleepメソッド」と「Delayメソッド」があります。

この記事では、

  • Sleepメソッドとは
  • Sleepメソッドの使い方
  • という基本的な内容から、

  • Delayメソッドとは
  • Delayメソッドの使い方
  • などの応用的な使い方に関しても解説していきます。

    今回はこれらの方法を覚えるために、処理を停止するためのさまざまな使い方をわかりやすく解説します!

    Sleepメソッドとは

    Sleepメソッドは一定時間処理を停止するために使います。Sleepメソッドは引数に停止させる時間をミリ秒単位で指定します。

    SleepメソッドでGUIアプリケーションを停止させる場合には、ユーザーの操作を受け付けないフリーズ状態になるので注意が必要です。

    フリーズさせない非同期処理を行うには、Delayメソッドを使います。

    Sleepメソッドの使い方

    ここでは、Sleepメソッドの使い方を解説します。Sleepメソッドは、引数に停止させる時間をミリ秒単位で指定します。

    次のプログラムで確認してみましょう。

    using System;
    using System.Threading;
    
    namespace Sample
    {
        class Sample
        {
            static void SleepSample()
            {
                for (int i = 0; i < 5; i++)
                {
                    Console.WriteLine(i);
                    Thread.Sleep(1000);
                }
            }
    
            static void Main()
            {
                Sample.SleepSample();
                Console.ReadKey();
            }
        }
    }

    実行結果:

    0
    1
    2
    3
    4

    このプログラムでは、1秒(1000ミリ秒)ごとに数値を表示しています。

    このようにして一定時間処理を停止することができました。

    Delayメソッドとは

    Delayメソッドは一定時間処理を停止するために使います。Delayメソッドは引数に停止させる時間をミリ秒単位で指定します。

    Sleepメソッドと違い、非同期処理で停止するためフリーズ状態にはなりません

    Delayメソッドの使い方

    ここでは、Delayメソッドの使い方を解説します。Delayメソッドは、引数に停止させる時間をミリ秒単位で指定します。

    Delayメソッドは非同期処理を行うため、「async」と「await」の記述が必要です。次のプログラムで確認してみましょう。

    using System;
    using System.Threading.Tasks;
    
    namespace Sample
    {
        class Sample
        {
            static async void DelaySample()
            {
                for (int i = 0; i < 5; i++)
                {
                    Console.WriteLine(i);
                    await Task.Delay(1000);
                }
            }
    
            static void Main()
            {
                Sample.DelaySample();
                Console.ReadKey();
            }
        }
    }

    実行結果:

    0
    1
    2
    3
    4

    このプログラムでは、1秒(1000ミリ秒)ごとに数値を表示しています。

    このようにして一定時間処理を停止することができました。

    まとめ

    いかがでしたか?今回は「Sleepメソッド」と「Delayメソッド」を使って一定時間処理を停止する方法を解説しました。

    「Sleepメソッド」ではフリーズしてしまうので、「Delayメソッド」の非同期処理をぜひ活用してくださいね。

    もし、処理を停止する方法を忘れてしまったらこの記事を確認してください!

    LINEで送る
    Pocket

    ITエンジニアへ転職したい方におすすめ

    自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
    エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

    しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

    こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

    そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

    侍ワークスは、独自案件を多く掲載しているだけでなく、

    ・応募から就業まで一貫したサポート

    ・就業後もアフターフォロー

    といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

    まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

    書いた人

    中沢 丈

    中沢 丈

    フリーランスエンジニア。
    システム開発からコンテンツ作成まで幅広く対応します。

    連絡先はこちらです。
    [email protected]