Thread Class

Thread A : 1
Thread B : 1
Thread A : 2
Thread B : 2
Thread A : 3
Thread B : 3
Thread A : 4
Thread A : 5
Thread B : 4
Thread A : 6
Thread B : 5
Thread A : 7
Thread で起動する Count Class を定義します。

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

プログラムの説明

  1. スレッドで起動出来るのは、void 型のパラメータ無しのメソッドです。
    パラメータを指定して Count Class を生成して、パラメータ無しのメソッド Run() をスレッドで起動します。
    Console Mode のプログラムは Thread を参照して下さい。
  2. 自動生成を使って Form を作成 でプロジェクトを作成して下さい。
    スレッドを使うときは using で Threading を追加します。
    using System.Threading;
    
  3. Form1.cs に Count Class を定義します。
    id は Object の識別で、 wait はカウントアップする間隔です。
        // スレッドでカウントする Class
        class Count
        {   string  Id;
            int     Wait;
            
            // Constructor
            public Count(string id, int wait)
            {   Id = id;
                Wait = wait;
            }
            // Wait 間隔でカウント
            public void Run()
            {   for (int i = 1; i < 100; ++i)
                {
                    System.Threading.Thread.Sleep(Wait);
                    Console.WriteLine(Id + " : " + i);
                }
            }
        }
    
  4. Form1.cs の Constructor で Count Class を生成してスレッドで Run メソッドを起動します。
    objA は 300 ミリ秒で、objB は 400 ミリ秒で起動してみました。
    バックグラウンド・スレッドとして起動するので、親が停止するとスレッドも停止します。
            public Form1()
            {
                InitializeComponent();
                Count   objA = new Count("Thread A", 300);
                Count   objB = new Count("Thread B", 400);
                Thread threadA = new Thread(new ThreadStart(objA.Run));
                threadA.IsBackground = true;    //バックグラウンド・スレッドとする
                threadA.Start();
                Thread threadB = new Thread(new ThreadStart(objB.Run));
                threadB.IsBackground = true;    //バックグラウンド・スレッドとする
                threadB.Start();
            }
    
  5. マウスのクリックでプログラムを終了します。
    Form1 に MouseDown のイベントを設定して下さい。
            private void mouseDown(object sender, MouseEventArgs e)
            {
                Application.Exit();
            }
    
  6. コンパイル&実行するとカウントした値が Console.WriteLine で出力ウインドウに印字されます。
    Thread A : 1
    Thread B : 1
    Thread A : 2
    Thread B : 2
    Thread A : 3
    Thread B : 3
    Thread A : 4
    Thread A : 5
    Thread B : 4
    Thread A : 6
    Thread B : 5
    Thread A : 7
    

[Next Chapter ↓] Thread Join
[Previous Chapter ↑] Thread Count

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