スレッドの中断

スレッドの実行を中断します。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの説明

  1. スレッドで起動する次のメソッドを見て下さい。
    今までは、4回表示すると終了していたのですが、今回は回数制限がありません。
    スレッドでこのメソッドを起動してみて下さい。
    Main() メソッドがブロックの終端に達しても、スレッドの表示が続くことを確かめて下さい。
        // ランダムな時間間隔で時刻を出力(終了しない)
        static void Run()
        {
            Random rnd = new Random();
            while(true)
            {
                Thread.Sleep(rnd.Next(200, 1500));
                Console.WriteLine("Time:{0}",DateTime.Now.TimeOfDay.ToString());
            }
        }
    
  2. スレッドを終了させるには、二つの方法があります。
    1. スレッドをバックグラウンドとして起動する。
      バックグラウンドとして起動したスレッドは、Main() が終了すると停止します。
    2. Abort(); でスレッドの実行を停止する。
      Abort(); を受け取るとスレッドは停止します。
  3. スレッドをバックグラウンドとして起動する方法です。
    "Main が終了します" が表示されると、スレッドも終了します。
        static void Main()
        {
            Thread thread = new Thread(new ThreadStart(Run));
            thread.IsBackground = true;     //バックグラウンド・スレッドとする
            thread.Start();
            for(int i=0; i<5; i++)  Thread.Sleep(1000);
            Console.WriteLine("Main が終了します");
        }
    
  4. Abort(); でスレッドの実行を停止する方法です。
    Join(); でスレッドの終了を待ち合わせます。
        static void Main()
        {
            Thread thread = new Thread(new ThreadStart(Run));
            thread.Start();
            for(int i=0; i<5; i++)  Thread.Sleep(1000);
            thread.Abort();
            thread.Join();
            Console.WriteLine("スレッドが終了しました");
        }
    

[Next Chapter ↓] Thread Count
[Previous Chapter ↑] Thread NowTime Class

超初心者のプログラム入門(C# Frame Work)