C#异步编程回调函数应用
|
admin
2025年3月28日 8:32
本文热度 1244
|
回调函数使得程序能在异步操作完成后执行后续处理,可当作执行完成标志。异步编程是建立在委托的基础上的一种编程方法;异步调用的每个方法都是在独立的线程中执行的,本质上就是一种多线程程序;异步比较适合在后台运行较为耗时的简单任务,并且任务之间相互独立,不能有直接访问可视化控件的代码。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 编辑过