スライドショー

【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

    無料でSEからWebエンジニアへ転職しませんか?



    侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

    • システムエンジニアという職業だけどコードが書けない
    • 事務作業が多くスキルがないため将来が不安
    • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
    という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

    弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

    既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

    まずは無料体験レッスンを予約する

    書いた人

    中沢 丈

    中沢 丈

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

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

    おすすめコンテンツ

    あなたにぴったりなプログラミング学習プランを無料で診断!

    プログラミング学習の効率を劇的に上げる学習メソッドを解説