【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メソッド」の非同期処理をぜひ活用してくださいね。

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

    「プログラミング、右も左もわからない…」という方にオススメ

    cta_under_bnr

    当プログラミングスクール「侍エンジニア」では、これまで6000人以上のエンジニアを輩出してきました。

    その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

    侍エンジニアは上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

    cta_under_bnr

    「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

    詳細はこちら

    書いた人

    中沢 丈

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

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

    おすすめコンテンツ

    まずはここから!初心者でも1から学べるプログラミング入門カリキュラム

    転職成功で受講料0円!あなたもプログラミングを学んでエンジニアデビュー