using System;
using System.Threading;
public class Simple
{
public class MyThread
{
// Threadは sealed classなので、継承できない。
// このため、Threadのdelegateにより呼び出す。
private int number;
public MyThread( int no )
{
number = no;
}
public void Run()
{
while (true)
{
Console.WriteLine("Thread Sleep = {0}", number);
Thread.Sleep(number);
}
}
}
public static void Main()
{
// ThreadからたたかれるMyThreadインスタンスを作る。
MyThread myThread1 = new MyThread(500);
MyThread myThread2 = new MyThread(1000);
// delegate により ThreadStart であるMyThread.Run メソッドを Threadオブジェクトに引き渡す。
// Thread.Start()が呼ばれた時点で、delegateされた MyThread.Runが呼ばれる。
Thread thread1 = new Thread(new ThreadStart(myThread1.Run));
Thread thread2 = new Thread(new ThreadStart(myThread2.Run));
thread1.Start();
thread2.Start();
Thread.Sleep(5000);
thread1.Abort();
thread2.Abort();
thread1.Join();
thread2.Join();
Console.WriteLine();
Console.WriteLine("MyThread.Run has finished");
}
}
|