C#异步编程回调函数应用
|
admin
2025年3月28日 8:32
本文热度 38
|
回调函数使得程序能在异步操作完成后执行后续处理,可当作执行完成标志。异步编程是建立在委托的基础上的一种编程方法;异步调用的每个方法都是在独立的线程中执行的,本质上就是一种多线程程序;异步比较适合在后台运行较为耗时的简单任务,并且任务之间相互独立,不能有直接访问可视化控件的代码。IAsyncResult result = objCal.BeginInvoke(9 * i, 1000*i, CallBack, i);这里最后一个参数i给回调函数的字段AsyncState,即i的值就是result.AsyncState。倒数第二个参数CallBack是自己创建的回调函数,即在for循环每次执行完一次后,要执行的内容。namespace _011_异步编程进阶
{
* 总结:
* 1.异步编程是建立在委托的基础上的一种编程方法。
* 2.异步调用的每个方法都是在独立的线程中执行的。本质上就是一种多线程程序
* 3.比较适合在后台运行较为耗时的简单任务,并且任务之间相互独立,不能有直接访问可视化控件的代码。
* 4.如果后台任务要求必须按照特定顺序执行,或者访问共享资源,则异步不太适合,应选择多线程。
*/
public partial class 异步编程进阶 : Form
{
private delegate int delCal(int num, int ms);
public 异步编程进阶()
{
InitializeComponent();
objCal = (num, ms) =>
{
Thread.Sleep(ms);
return num * 2;
};
}
#region 根据委托编写方法
private int Task1(int num,int ms)
{
System.Threading.Thread.Sleep(ms);
return num * 2;
}
#endregion
private delCal objCal = null;
private void button1_Click(object sender, EventArgs e)
{
for (int i = 1; i < 10; i++)
{
IAsyncResult result = objCal.BeginInvoke(9 * i, 1000*i, CallBack, i);
}
}
private void CallBack(IAsyncResult result)
{
int res=objCal.EndInvoke(result);
Console.WriteLine("第{0}个计算结果为:{1}", result.AsyncState.ToString(),res);
}
}
}
阅读原文:原文链接
该文章在 2025/3/28 11:32:35 编辑过