デリゲート、イベントを使用してスレッド処理中の状態の変化を送信する。
class Worker
{
public delegate void ThreadProcessUnitCompleteEventHandler(int state);
public event ThreadProcessUnitCompleteEventHandler eventHandler;
private bool finished = true;
private Thread workThread;
public void start()
{
if(workThread != null)
{
workThread = new Thread(new ThreadStart(workerThreadLoop));
workThread.start();
}
}
public void stop()
{
finished = false;
workThread.Join();
workThread = null;
}
private void workerThreadLoop()
{
int count = 0;
while(finished)
{
for(int i=0;i<1000;i++)
{
}
if(eventHandler != null)
eventHandler(this, count);
}
}
}