六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 1000|回复: 0

.NET异步编程总结----四种实现模式

[复制链接]

升级  97.67%

159

主题

159

主题

159

主题

举人

Rank: 3Rank: 3

积分
493
 楼主| 发表于 2013-1-1 22:09:10 | 显示全部楼层 |阅读模式
<div id="cnblogs_post_body">  最近很忙,既要外出找工作又要兼顾老板公司的项目。今天在公司,忙里偷闲,总结一下.NET中的异步调用函数的实现方法,DebugLZQ在写这篇博文之前自己先动手写了本文的所有示例代码,开写之前是做过功课的,用代码说话方有说服力。
  本文的内容旨在用最简洁的代码来把异步调用的方法说清楚,园子里的高手老鸟可以绕行,不喜勿喷,非诚勿扰~
  lz的前一篇文章简单的说了下异步,主要是从理解上来讲;这篇文章主要写具体的实现方法。实现异步编程有4种方法可供选择,这4种访求实际上也对应着4种异步调用的模式,分为“等待”和“回调”两大类。四种方法,我在代码中都进行了详细的注释,这里不罗嗦了,直接用代码说明吧
第一种方法:BeginEnvoke EndEnvoke方法,属于“等待”类。
<div class="cnblogs_code">using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;namespace 异步调用实现方法汇总{    /// <summary>    /// 异步调用方法总结:    /// 1.BeginEnvoke EndEnvoke    /// 当使用BeginInvoke异步调用方法时,如果方法未执行完,EndInvoke方法就会一直阻塞,直到被调用的方法执行完毕    /// </summary>    class Program    {        public delegate void PrintDelegate(string s);        static void Main(string[] args)        {            PrintDelegate printDelegate = Print;            Console.WriteLine("主线程");            IAsyncResult result= printDelegate.BeginInvoke("Hello World.", null, null);            Console.WriteLine("主线程继续执行...");            //当使用BeginInvoke异步调用方法时,如果方法未执行完,EndInvoke方法就会一直阻塞,直到被调用的方法执行完毕            printDelegate.EndInvoke(result);            Console.WriteLine("Press any key to continue...");            Console.ReadKey(true);        }        public static void Print(string s)        {            Console.WriteLine("异步线程开始执行:"+s);            Thread.Sleep(5000);        }    }}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表