C# 最简单的异步委托
//异步委托 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading;namespace AsyncDelete {class Program{public delegate int TaskesAWhileDelegate(int data, int ms);static void Main(string[] args){TaskesAWhileDelegate dl = TaskesAWhile;IAsyncResult ar = dl.BeginInvoke(1, 3000, null, null);Console.WriteLine("main主线程");while (!ar.IsCompleted){Console.Write(".");Thread.Sleep(50);}int result = dl.EndInvoke(ar);Console.WriteLine("result:{0}", result);Console.Read();}static int TaskesAWhile(int data, int ms){Console.WriteLine("TaskesAWhile started");Thread.Sleep(ms);Console.WriteLine("TaskesAWhile completed");return ++data;}} }
或:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading; 6 7 namespace AsyncDelete 8 { 9 class Program 10 { 11 public delegate int TaskesAWhileDelegate(int data, int ms); 12 static void Main(string[] args) 13 { 14 TaskesAWhileDelegate dl = TaskesAWhile; 15 16 IAsyncResult ar = dl.BeginInvoke(1, 300, new AsyncCallback(MyAsyncCallback), dl); 17 Console.WriteLine("main主线程"); 18 while (!ar.IsCompleted) 19 { 20 Console.Write("."); 21 Thread.Sleep(50); 22 } 23 24 } 25 static int TaskesAWhile(int data, int ms) 26 { 27 Console.WriteLine("TaskesAWhile started"); 28 Thread.Sleep(ms); 29 Console.WriteLine("TaskesAWhile completed"); 30 return ++data; 31 } 32 33 static void MyAsyncCallback(IAsyncResult asyncResult) 34 { 35 Console.WriteLine("MyAsyncCallback start"); 36 Thread.Sleep(30); 37 TaskesAWhileDelegate dll = asyncResult.AsyncState as TaskesAWhileDelegate; 38 Console.WriteLine("MyAsyncCallback:{0}", dll.EndInvoke(asyncResult)); 39 40 41 Console.WriteLine("MyAsyncCallback completed"); 42 } 43 } 44 }
//BegininInvoke()方法,返回类型:IAsyncResult
通过IAsyncResult获取委托执行的状态(IsCompleted)和调用委托EndInvoke()返回执行结果,
EndInvoke()方法会一直等待,直到委托完成其任务为止.
执行结果:
main主线程
TaskesAWhile started
.............................................................TaskesAWhile completed
result:2
转载于:https://www.cnblogs.com/xmyy/articles/2812218.html
C# 最简单的异步委托相关推荐
- .NET简谈组件程序设计之(异步委托)
说到委托我想大家基本上都用过的,今天这篇文章就来讲解关于委托的异步奥秘. 在我们正常使用的时候很少会去用异步委托技术来提高代码效率.委托的好处就是能对方法进行面向对象的封装,随意传递.在任何组件客户代 ...
- [转载]C#异步委托的用法 .
每个委托都有三个方法:Invoke.BeginInvoke.EndInvoke.第一个方法是委托指定函数的同步调用,另外两个是异步调用. BeginInvoke方法,调用后立即返回,不等待调用结果.E ...
- C# 异步委托 BeginInvoke EndInvoke
1. 简单主线程中委托: static void Main(string[] args) {//定义一个委托,并初始化Func<int, int, string> delFunc = (a ...
- 异步委托实现多线程winform控件编程
private void button1_Click(object sender, EventArgs e) { ThreadStart ts ...
- 在.NET2.0中如何更简单的使用委托将方法加载到事件中去
我们知道在System命名空间中,.NET为我们提供了EventHandler的委托,它的原型是delegate void EventHandler(object sender,EventArgs e ...
- 多线程,异步委托,同步委托几种方式的区别
Code public delegate void DoThingsDelegate(); private void Window_Loaded(object send ...
- C#里实现简单的异步TCP服务器
C#里实现简单的异步TCP服务器 在前面实现阻塞式的TCP服务器,比较容易理解,解决简单的问题够用了. 但是如果面对多个连接,多个客户端的处理,就不行了. 这时候就要采用异步的TCP服务器,或者多任务 ...
- C#异步编程的实现方式(1)——异步委托
异步的实现即多线程,一种简单的方式就是创建一个委托,然后异步调用它. .Net Framework已经为我们提供了委托的异步调用方法.下面介绍三种使用委托实现异步的方法. 1.投票(IsComplet ...
- [转]C#异步编程的实现方式(1)——异步委托
异步的实现即多线程,一种简单的方式就是创建一个委托,然后异步调用它. .Net Framework已经为我们提供了委托的异步调用方法.下面介绍三种使用委托实现异步的方法. 1.投票(IsComplet ...
- 界面-工作者线程结构之:异步委托调用
1.流程: 1.1 定义一个委托,形如:public delegate object WorkThread(object controlsAndParameters);由于object可以容纳任何.N ...
最新文章
- 《将要淘汰的八种人》读后感
- 面试官:Redis用过是吧?那你讲讲Redis都有哪些监控指标?
- TRzCheckTree的使用
- [COCI 2018#5]Parametriziran
- 简单利用HTTP中的PUT协议拿下SHELL
- spring mvc学习(6):springMVC的常见注解
- 计算机设备故障类型有哪些,计算机硬件故障有哪些
- @ta,一起过节吧!
- pytorch使用Ray-tune对原有训练模型的代码改写,自动调参(一)
- 【python-dict】dict的使用及实现原理
- vscode如何关闭Pylint警告或错误提示
- 程序猿的爱情--2011-12-27
- Python类的私有属性
- oracle混音插件教程,Waves插件个人经验谈
- 电脑小手图标怎么去除_图文教你去除桌面图标箭头_消除电脑图标小箭头的方法-系统城...
- alitum designer 快速制作元器件封装
- 计算机考研机试如何准备?
- DocuFreezer(批量文件格式转换器)官方正式版V3.1.2012.18200 | 文件格式转换器哪个好用
- wingdings字体符号在哪_Wingdings特殊字符及符号对照表
- 嵌入式linux与windows之间的tftp文件传输(保姆级)
热门文章
- NetCDF文件介绍
- 重写Java中equals和hashcode方法的一般规则
- ImageLoader的简单分析(终结篇)
- android 对象输出到文件
- 快应用开发教程【02】--项目配置教程
- 基于pyspark 大数据分析_基于阿里云平台的大数据教学案例 —— B站弹幕数据分析...
- ai如何置入_AI中如何导入图形图像?
- 奇门对接需求设计_奇门格局详解_-_么学声_张志春
- android html片段,详解Android WebView加载html片段
- java案例代码10--购物车案例--重要