异步编程模型。

目的:
     把需要很长时间处理的事件交付子线程去处理,自己继续往下做该做的事情。
    
方法:
     使用事件或者委托。来反馈子线程是否已完成。
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");//任务结束后,由子线程调用该方法。
  }
}

如果使用事件,可以定义一个事件,类型为委托对应的类型。

原文地址:https://www.cnblogs.com/si812cn/p/1222950.html