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

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

    この記事を書いた人

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

    連絡先はこちらです。
    ntakeshi@sejuku.net

    目次