C#异步回调函数基础 发表于 2020-06-16 | 分类于 编程爱好 | 评论数: | 阅读次数: 回调函数的基本用法。 12345678910111213141516171819202122232425262728293031323334353637383940414243using System;using System.Threading;namespace AsyncBasic{ class Program { [STAThread] static void Main(string[] args) { new Program().ExcuteCal(); Console.ReadKey(); } private Func<int, int, int> Cal = null; // [1] 声明委托变量。 都要用声明为成员变量 public Program() { Cal = new Func<int, int, int>(ExcuteTask1); // 初始化委托。 } // [4] 同时执行多个任务 public void ExcuteCal() { for (int i = 1; i <= 10; i++) { Cal.BeginInvoke(i * 10, i * 100, MyCallBack, i); //最后一个参数 i 给回调函数的字段AsyncState赋值,如果数据很多可以定义成类或结构 } } private int ExcuteTask1(int num, int ms) // [2] 根据委托实现方法。 { Thread.Sleep(ms); return num * num; } //[5] 回调函数 private void MyCallBack(IAsyncResult result) { int res = Cal.EndInvoke(result); Console.WriteLine("第{0}个计算结果是{1}", result.AsyncState.ToString(), res); } }} 程序有些地方可以用 lamdba 表达式简化下。 输出: 12345678910第1个计算结果是100第2个计算结果是400第3个计算结果是900第4个计算结果是1600第5个计算结果是2500第6个计算结果是3600第7个计算结果是4900第8个计算结果是6400第9个计算结果是8100第10个计算结果是10000 感谢支持! 打赏 微信支付 支付宝 本文作者: huvjie 本文链接: https://blog.huvjie.com/2020/06/16/200616N02/ 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!