当前位置: 首页 > news >正文

C# BeginInvoke 加 EndInvoke实现异步操作

1、定义一个委托

delegate long MyDel(int first, int second);

2、 需异步操作的函数

 static int sum(int x,int y)                {Console.WriteLine("InSide Sum1");Thread.Sleep(1000);Console.WriteLine("InSide Sum2");return x + y;}

3、回调方法,在异步方法执行完后才执行 ,接收返回结果

static  void callback_(IAsyncResult iar) 
{Console.WriteLine("Inside CallWhenDone");AsyncResult ar = (AsyncResult)iar; //里氏转换,如果父类中装的是子类的对象,那么可以将这个父类转换为子类对象   Mydel del = (Mydel)ar.AsyncDelegate;  //通过AsyncResult类对象的AsyncDelegate属性转化为合适的Mydel委托类型long result = del.EndInvoke(iar);Console.WriteLine("The result is: {0}",result);
}

4、异步调用:

static void Main(string[] args){Mydel Del = new Mydel(sum);Console.WriteLine("Before BeginInvoke");IAsyncResult iar = Del.BeginInvoke(5,6,new AsyncCallback(callback_),Del);                   //Del焕成null结果也一样Console.WriteLine("Doing more work in main");Thread.Sleep(500);Console.WriteLine("Done with Main.Exiting");Console.ReadKey();}

http://www.lryc.cn/news/116498.html

相关文章:

  • “华为杯”研究生数学建模竞赛2015年-【华为杯】B题:数据的多流形结构分析(续)
  • R语言APSIM模型高级应用及批量模拟
  • 【硬件设计】模拟电子基础三--集成运算放大电路
  • JavaWeb(11)——前端综合案例5(小黑记事本)
  • 在使用TensorFlow的时候内部报错:内部某个方法或属性不存在
  • dubbo之高可用
  • gitee代码扫描js代码,降低复杂度,减少if-else判断的处理方法
  • MySQL及SQL语句(3)
  • MySQL 查询语句大全
  • 【Axure高保真原型】账单列表和详情
  • 嵌入式面试题1
  • base64转二进制流,file文件
  • 各种查找算法的效率分析
  • 微报告下载!市场不确定性周期下的激光雷达前装赛道
  • Java版企业电子招标采购系统源码Spring Cloud + Spring Boot +二次开发+ MybatisPlus + Redis tbms
  • 并网逆变器学习笔记6---三电平SVPWM下的连续和不连续调制
  • TS协议之PES(ES数据包)
  • 银河麒麟V10 SP3 X86 二进制文件部署 mysql-5.7.29 GTID 半同步复制的双主架构
  • python爬虫3:requests库-案例1
  • 计算机网络 数据链路层 媒体接入控制
  • 面部表情识别(Pytorch):人脸检测模型+面部表情识别分类模型
  • 外卖点餐小程序开源源码——支持扫码点餐
  • 十分钟掌握使用 SolidJS 构建全栈 CRUD 应用程序
  • LabVIEW开发多材料摩擦电测量控制系统
  • 【Linux】网络基础1
  • HTML - Javascript - 原生的JS HTTP请求:实用主义的一篇文章
  • Intellij IDEA运行报Command line is too long的解决办法
  • 信号槽传输过程中指针所指对象的生命周期
  • c++ 递归锁的使用
  • Oracle TDE wallet