■ スレッド・プログラムのポイント
以下のクラスで実装していく
* Thread(Start()メソッド)
* ManualResetEvent(WaitOne()メソッド、Reset()メソッド、Set()メソッド)
■ サンプル
// 非シグナル状態
ManualResetEvent manualResetEvent = new ManualResetEvent(false);
private void button1_Click(object sender, EventArgs e)
{
Thread thread = new Thread(this.ThreadProcess);
thread.Start();
}
private void ThreadProcess()
{
for (int i = 0; i < 10; i++)
{
// Set(シグナル状態になるまで)待つ
this.manualResetEvent.WaitOne();
// 非シグナル状態になる
this.manualResetEvent.Reset();
// Invokeで、listBox1に数字を表示させる
this.Invoke(new MethodInvoker(delegate
{
this.listBox1.Items.Add(i.ToString());
}));
}
}
private void button2_Click(object sender, EventArgs e)
{
// シグナル状態にする
this.manualResetEvent.Set();
}