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

saas建站 cms科技感背景素材

saas建站 cms,科技感背景素材,宣威市住房与城乡建设局网站,c 网站建设可视化实现大家在编程过程中都会用到一些异步编程的情况。在c#的BCL中#xff0c;很多api都提供了异步方法#xff0c;初学者可能对各种不同异步方法的使用感到迷惑#xff0c;本文主要为大家梳理一下异步方法的变迁以及如何使用异步方法。 BeginXXX#xff0c;EndXXX模式 在.Net F…大家在编程过程中都会用到一些异步编程的情况。在c#的BCL中很多api都提供了异步方法初学者可能对各种不同异步方法的使用感到迷惑本文主要为大家梳理一下异步方法的变迁以及如何使用异步方法。 BeginXXXEndXXX模式 在.Net Framework 2.0中最常见的方法是BeginXXX和EndXXX这样的方法来搭配使用。这种模式可以概括为方法回调函数模式或者称为InvokeMethodEventHandler模式。 这种模型的基本流程是 调用BeginXXX方法BeginXXX方法中传入一个回调方法这个回调方法会在异步方法执行结束后被执行调用EndXXX方法使用EndXXX方法会阻塞当前线程直到异步方法返回结果。 我们看一个FileStream的示例方法在.Net 2.0中你需要这样使用异步 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 using System; using System.IO; using System.Text;   public class AsyncTest {     public static void Main(string[] args)     {         using (FileStream file  new FileStream(Test.txt, FileMode.OpenOrCreate))         {             var bytes Encoding.UTF8.GetBytes(Test for .net framework 2.0);               IAsyncResult asyncResult file.BeginWrite(bytes, 0, bytes.Length, callback, null);               file.EndWrite(asyncResult);         }           Console.ReadLine();     }       private static void callback(IAsyncResult ar)     {         Console.WriteLine(Finish Write);     } } XXXAsync模式 从.Net 4.0开始微软引入了Task。由于Task本身的灵活性也使得我们的异步编程模型更简洁。上面的例子在.Net 4.5中可以这样实现 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 using System; using System.IO; using System.Text; using System.Threading.Tasks;   public class AsyncTest {     public static void Main(string[] args)     {         using (FileStream file  new FileStream(Test.txt, FileMode.OpenOrCreate))         {             var bytes Encoding.UTF8.GetBytes(Test for .net framework 4.5);               var task file.WriteAsync(bytes, 0, bytes.Length);               task.Wait();         }           Console.ReadLine();     } } 微软在许多BCL的api中都添加了XXXAsync方法来实现新的异步模型。Task本身比回调方法灵活了许多可以更优雅的实现回调取消调度等操作。关于Task的使用方式可以看我之前总结的文章link。 async和await模型 为了进一步简化异步模型微软从Visual Studio 2012开始引入了async和await关键字。这个模型本身是基于编译器的一个语法糖编译后会生成一个statemachine模型。这样上面例子中的写法也可以简化成 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 using System; using System.IO; using System.Text; using System.Threading.Tasks;   public class AsyncTest {     public static void Main(string[] args)     {         TestFunc();     }       private static async void TestFunc()     {         using (FileStream file  new FileStream(Test.txt, FileMode.OpenOrCreate))         {             var bytes Encoding.UTF8.GetBytes(Test for .net framework 4.5);             await file.WriteAsync(bytes, 0, bytes.Length);         }     } } 关于异步编程模型的兼容性 如果大家注意看BCL中的类库会发现微软并没有在最新版本的类库中对每一个BeginXXX的方法都添加了XXXAsync方法。这种情况下我们如何能让新的异步模型兼容旧的方法呢 以NamedPipeServerStream为例这个类库实现了一个管道的功能微软并没有为其更新XXXAsync方法你可以使用TaskFactory来兼容新的异步模型你可以这样来实现 1 2 3 4 5 6 7 8 9 10 11 12 13 private static void OldAsyncModel() {     NamedPipeServerStream pipe  new NamedPipeServerStream(customPipe, PipeDirection.InOut, -1, PipeTransmissionMode.Message, PipeOptions.Asynchronous | PipeOptions.WriteThrough);     IAsyncResult async pipe.BeginWaitForConnection(callback, null);     pipe.EndWaitForConnection(async); }   private static async void NewAsyncModel() {     NamedPipeServerStream pipe  new NamedPipeServerStream(customPipe, PipeDirection.InOut, -1, PipeTransmissionMode.Message, PipeOptions.Asynchronous | PipeOptions.WriteThrough);       await Task.Factory.FromAsync(pipe.BeginWaitForConnection, pipe.EndWaitForConnection, null); } 因此我们可以总结为.Net中有两种异步编程模型 不返回Task对象的调用方法回调方法的模型返回Task对象的XXXAsync模型和asyncawait模型 BeginXXX模型微软已经逐渐的考虑废弃返回Task的异步编程模型目前是微软建议的方式。 作者独上高楼 出处http://www.cnblogs.com/myprogram/ 本文版权归作者和博客园共有欢迎转载但未经作者同意必须保留此段声明且在文章页面明显位置给出原文连接否则保留追究法律责任的权利。
http://www.pierceye.com/news/865338/

相关文章:

  • 武进区城乡建设局网站在线员工后台网站建设
  • 关于网站开发人员的薪资易语言怎么做无限打开网站
  • 网站备案名称几个字企业网站定制案例
  • 新浪云服务器做网站重庆建设厅官方网站
  • 苏州市住房和城乡建设局官方网站郑州专业旅游网站建设
  • 网站免费正能量直接进入浏览器下载安装公开课网站建设
  • 个人做电影网站合法吗网页制作与网站建设完全学习手册下载
  • 椒江做网站wordpress的分类
  • 新手做网站应该注意什么重庆市建设工程造价信息网公众号
  • 网址输入奉化seo页面优化外包
  • 坪山商城网站建设哪家效益快教务管理系统是应用软件吗
  • 深圳网站搭建找谁怎么在手机上制作app
  • 做app和做网站的区别桂林市天气预报15天
  • 高端织梦html5网站模板 dedecms网络公司模板关键词排名优化方法
  • 上海网站建设咨找个网站2021能看到
  • 可以用服务器做网站查询公司信息
  • 个人可以备案企业网站吗旅行社网站 模板
  • 三丰云做网站步骤网站怎么上传ftp
  • 做二手车有哪些网站有哪些手续网站建设单位有哪些方面
  • 建设网站的和服务器常州免费网站制作
  • 电子外贸网站重庆有什么好玩的
  • 商务网站的建设阶段包括郑州的做网站公司哪家好
  • 深圳网站建设网络公司七星彩网投网站建设
  • 手机建网站公司wordpress增加关键字
  • 招聘网站有哪些平台电商网站建设方式
  • 网站的备案要求域名icp备案查询
  • 网站的投资和建设项目站群服务器
  • 建网站电脑版和手机版怎么做网页实训总结及心得体会
  • 网站建设咨询费用一流的网站建设流程图
  • 如何进行营销型企业网站的优化如何在百度上推广自己