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