1.异步编程是建立在委托 基础上的一种编程方法。
2.异步调用的每个方法都是在独立的线程中执行。因此本质上就是一种多线程,是一种简化版本的多线程技术。
3.比较适合在后台执行较为耗时的简单任务,并且要求相互独立,任务中不能用直接访问可视化控件。
4.如果后台任务要求必须按照特定顺序执行,或者必须访问共享资源,则异步编程不适合,而应该直接采用多线程开发技术。
**************************************例程******************************************************************
//【1】声明一个委托
public delegate int MyCalculator(int num,int ms);
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//定义委托变量
private MyCalculator objMyCal = null;
//给委托变量赋值
//定义符合委托类型的方法
private int ExecuteTask(int num,int ms)
{
Thread.Sleep(ms);
return num * num;
}
private void btnExec_Click(object sender, EventArgs e)
{
objMyCal = ExecuteTask;
//产生10个任务
for (int i = 0; i < 11; i++)
{
//最后一个参数i 给回调函数的字段AsyncState赋值,如果数据很多可以定义成类或结构
objMyCal.BeginInvoke(10*i,100*i,MyCallBack,i);
}
}
//回调函数
private void MyCallBack(IAsyncResult result)
{
int res = objMyCal.EndInvoke(result);
//异步显示结果:result.AsyncState字段用来封装回调时自定义的参数,object类型
Console.WriteLine("第{0}个计算结果为:{1}",result.AsyncState.ToString(),res);
}
}