目的:
把需要很长时间处理的事件交付子线程去处理,自己继续往下做该做的事情。
方法:
使用事件或者委托。来反馈子线程是否已完成。
public delegate void Callback();
public class WaitCall
{
private Callback vFinished;//指定一个委托对象。
public void DoLongTask(Callback pCallback)
{
vFinished = pCallback;//指定当结束时触发哪个方法
Thread vThread = new Thread(new ThreadStart(DoTheWork));//通过子线程来执行该任务
vThread.Start();
}
public void DoTheWork()
{
//do the long work
//set msg to tell the work has been finished
vFinished();//结束时,触发与委托绑定的方法
}
}
public class mainApp
{
public void DO()
{
WaitCall vWaitCall = new WaitCall();
vWaitCall.DoLongTask(DoFinished);//执行该任务
}
private void DoFinished()
{
MessageBox.Show("Finished");//任务结束后,由子线程调用该方法。
}
}
如果使用事件,可以定义一个事件,类型为委托对应的类型。