Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
Thread Class
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)の超初心者のプログラム入門


プログラムの説明
- スレッドで起動出来るのは、void 型のパラメータ無しのメソッドです。
パラメータを指定して Count Class を生成して、パラメータ無しのメソッド Run() をスレッドで起動します。
Console Mode のプログラムは Thread を参照して下さい。
- 自動生成を使って Form を作成 でプロジェクトを作成して下さい。
スレッドを使うときは using で Threading を追加します。
- 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);
}
}
}
|
- 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();
}
|
- マウスのクリックでプログラムを終了します。
Form1 に MouseDown のイベントを設定して下さい。
private void mouseDown(object sender, MouseEventArgs e)
{
Application.Exit();
}
|
- コンパイル&実行するとカウントした値が 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)

※・