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

五莲网站建设公司天山网

五莲网站建设公司,天山网,网络推广和网络运营,《电子商务网站开发与管理》书籍本文将介绍C#异步委托的三种实现方式#xff0c;并给出相关示例代码及解析。 注意事项 用委托开启线程的前提是#xff1a;创建项目时必须选择“.NET Framework#xff0c;如果选择的是”.Net Core“#xff0c;在调用BeginInvoke时#xff0c;系统会报错”Operati…本文将介绍C#异步委托的三种实现方式并给出相关示例代码及解析。 注意事项 用委托开启线程的前提是创建项目时必须选择“.NET Framework如果选择的是”.Net Core“在调用BeginInvoke时系统会报错”Operation is not supported on this platform.“。 异步调用的另一个前提是委托的方法列表中只能包含一个方法。 等待至完成 通过BeginInvoke和EndInvoke实现。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks;namespace FrameworkDemo {public delegate long MyDel(int a, int b);class Program{static long sum(int a, int b) {Thread.Sleep(10 * 1000);return a b;}static void Main(string[] args){// 异步委托操作描述IAsyncResult res null;long result 0;AsyncCallback callback ar {// 输出结果“计算结果为11”Console.WriteLine(${ar.AsyncState}{result});};MyDel del new MyDel(sum);// BeginInvoke开启异步调用// res的打印结果为System.Runtime.Remoting.Messaging.AsyncResultres del.BeginInvoke(3, 8, callback, 计算结果为); // 等待线程结束并获取返回值result del.EndInvoke(res);Console.ReadLine();}} }BeginInvoke函数的最后两个参数分别是一个回调函数以及传入这个回调函数的参数。当委托线程运行结束后会自动运行这个回调函数。之前的参数个数及类型取决于定义委托时参数的类型和个数。IAsyncResult类型表示对异步委托操作的描述一调用异步委托就立刻会在主函数中得到这个返回值打印结果为“System.Runtime.Remoting.Messaging.AsyncResult”。EndInvoke会把主线程卡主知道异步委托方法结束此时将之前拿到的异步委托操作描述作为参数传入即可获得异步委托函数的真正返回值。 轮询模式 通过IsCompleted实现。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks;namespace FrameworkDemo {public delegate long MyDel(int a, int b);class Program{static long sum(int a, int b) {Thread.Sleep(10 * 1000);return a b;}static void Main(string[] args){// 异步委托操作描述IAsyncResult res null;long result 0;AsyncCallback callback ar {// 输出结果“计算结果为11”Console.WriteLine(${ar.AsyncState}{result});};MyDel del new MyDel(sum);// BeginInvoke开启异步调用// res的打印结果为System.Runtime.Remoting.Messaging.AsyncResultres del.BeginInvoke(3, 8, callback, 计算结果为);while (!res.IsCompleted) {/*一系列想要的操作*/}// 等待线程结束并获取返回值result del.EndInvoke(res);Console.ReadLine();}} }之前我们调用BeginInvoke后直接调用EndInvoke这使得主线程一直卡主直到委托线程返回通过IsComplated进行轮询线程状态我们可以在循环中利用等待时间执行一些别的想要的工作。 回调 关于回调函数比较标准的写法如下 using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Remoting.Messaging; using System.Text; using System.Threading; using System.Threading.Tasks;namespace FrameworkDemo {public delegate long MyDel(int a, int b);class Program{static long sum(int a, int b) {Thread.Sleep(10 * 1000);return a b;}// 异步委托执行完成后需要调用的回调函数static void testCallback(IAsyncResult ar) {System.Runtime.Remoting.Messaging.AsyncResult varResult (System.Runtime.Remoting.Messaging.AsyncResult)ar;MyDel test (MyDel)varResult.AsyncDelegate;long result test.EndInvoke(ar);Console.WriteLine(${ar.AsyncState}: {result});}static void Main(string[] args){ MyDel del new MyDel(sum);AsyncCallback asyncTest new AsyncCallback(testCallback);del.BeginInvoke(3, 8, asyncTest, 计算结果为);Console.ReadLine();}} }当异步委托运行结束后系统会自动调用回调函数并将异步委托描述信息IAsyncResult作为参数传入回到函数中因此我们需要做的就是解析异步委托描述信息。
http://www.yayakq.cn/news/6047/

相关文章:

  • 交易类网站做支付宝功能西安免费做网站电话
  • 网站开发项目的里程碑大连网站建设企业
  • 三合一网站五屏网站建设怎样
  • 郑州百度关键词seoseo发外链网站
  • 做房产网站长wordpress文章字数
  • 国示范校建设网站手机app是什么意思
  • 微信订阅号关键网站淘宝客怎样建设网站
  • 中山建站wordpress主题seven柒比贰
  • 云主机重装系统后网站重新部署吗建设一个网站的设备
  • 快速达建网站赣州章贡区属于什么风险区
  • 用asp做旅游网站新乡市建设路小学网站
  • 东营智能网站设计互联网营销师怎么报名
  • 做网站怎么上传物流案例网站
  • 天津高端网站建设案例vi设计合同范本最新版
  • 布吉网站建设价格全国当先的网络建站推广
  • 佛山营销网站建设咨询自建网站软件
  • app开发网站排行榜网站制作公司 顺的
  • 哪里可以做免费的物流网站wordpress博客小工具标签
  • 营销网站建设评估及分析中国工程预算网
  • 网站运营刚做时的工作内容html软件下载手机版
  • 东莞网站建设 汇卓湖州网络推广竞价
  • 免费手机网站源码seo网站分析报告
  • 建设官方企业网站网站建设合同书 简易
  • 网站建设厂商商业网点消防规范
  • 网站建设swf播放器源码html网页制作案例
  • 纪检监察网站建设背景佛山企业网
  • 深圳网站建设app开发宁波网站建设与设计制作
  • 网站怎么做动态背景图片网页设计实训总结200字
  • 哪种语言做网站好下载ppt模板免费的网站
  • 网站为什么百度搜不到crm管理系统软件