C#多线程实现方法——异步委托/调用(一)
来源:互联网 发布:数码暴龙网络侦探透明 编辑:程序博客网 时间:2024/06/05 14:29
小编最近在做项目中遇到了关于异步委托,刚开始很是蒙圈的东西,心里默默在想这是“啥玩意 啊”,不过经过一大堆努力后,整理了一下。
【例子】
首先我们来看一个简单的例子:
小明在烧水,等水烧开以后,将开水灌入热水瓶,然后开始整理家务
小文在烧水,在烧水的过程中整理家务,等水烧开以后,放下手中的家务活,将开水灌入热水瓶,然后继续整理家务
这也是日常生活中很常见的情形,小文的办事效率明显要高于小明。从C#程序执行的角度考虑,小明使用的同步处理方式,而小文则使用的异步处理方式。
同步处理方式下,事务是按顺序一件一件处理的;而异步方式则是,将子操作从主操作中分离出来,主操作继续进行,子操作在完成处理的时候通知主操作。
【异步委托】
我们通过异步委托来完成:
class BoilWater { static TimeSpan Boil() { Console.WriteLine("水壶:开始烧水..."); Thread.Sleep(6000); Console.WriteLine("水壶:水已经烧开了!"); return TimeSpan.MinValue; } delegate TimeSpan BoilingDelegate(); static void Main(string[] args) { Console.WriteLine("小文:将水壶放在炉子上"); BoilingDelegate d = new BoilingDelegate(Boil); IAsyncResult result = d.BeginInvoke(BoilingFinishedCallback, null); Console.WriteLine("小文:开始整理家务..."); for (int i = 0; i < 20; i++) { Console.WriteLine("小文:整理第{0}项家务...", i + 1); Thread.Sleep(1000); } } static void BoilingFinishedCallback(IAsyncResult result) { AsyncResult asyncResult = (AsyncResult)result; BoilingDelegate del = (BoilingDelegate)asyncResult.AsyncDelegate; del.EndInvoke(result); Console.WriteLine("小文:将热水灌到热水瓶"); Console.WriteLine("小文:继续整理家务"); } }
效果图:阅读全文
0 0
- C#多线程实现方法——异步委托/调用(一)
- C#多线程实现方法——异步委托/调用
- C#多线程实现方法——异步委托/调用(二)
- C#构建多线程应用程序(1) —— 使用委托来自动创建次线程以实现异步方法的调用
- C# 多线程 用委托实现异步_调用委托的BeginInvoke和EndInvoke方法
- C# 多线程 用委托实现异步_调用委托的BeginInvoke和EndInvoke方法
- C#多线程的异步委托/调用
- 多线程与异步方法委托调用
- c# 多线程和异步委托实现进度条
- c#使用委托实现异步调用
- c#使用委托实现异步调用
- C#异步线程(一)异步委托
- C# 委托实现多线程调用窗体
- 关于C#多线程之一——异步委托
- C# 异步实现方法调用
- C# 委托(同步调用、异步调用、异步回调)
- c#委托异步实现
- C#异步委托概述(一)
- easyUI conbobox 简单使用
- PL/SQL Oracle恢复默认界面设置
- gulpfile文件
- ArangoDB高级操作
- SimpleDateFormat使用详解
- C#多线程实现方法——异步委托/调用(一)
- javascript高级程序设计(javascript简介)
- web前端左右选择框移动,及查询
- codeforces 816C Karen and Game
- 正则表达式之邮箱验证
- 【Redis入门】Redis概述
- linux下c语言入门02 c语言特性及函数入门
- JMeter中各种请求格式实现》》》原文链接:
- WebUI设计命名规范