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

珠海网站制作推广公司哪家好管理咨询公司信息

珠海网站制作推广公司哪家好,管理咨询公司信息,广州制作网站报价,外链工具xg昨天有朋友在公众号发消息说看不懂await#xff0c;async执行流#xff0c;其实看不懂太正常了#xff0c;因为你没经过社会的毒打#xff0c;没吃过牢饭就不知道自由有多重要#xff0c;没生过病就不知道健康有多重要#xff0c;没用过ContinueWith就不知道await,async有… 昨天有朋友在公众号发消息说看不懂awaitasync执行流其实看不懂太正常了因为你没经过社会的毒打没吃过牢饭就不知道自由有多重要没生过病就不知道健康有多重要没用过ContinueWith就不知道await,async有多重要下面我举两个案例佐证一下一案例一 【嵌套下的异步】写了这么多年的程序相信大家都知道连接数据库少不了这几个对象DbConnectionDbCommandDbDataReader等等。。先来看看ContinueWith在连接数据库时嵌套过深的尴尬。1. NetFramework 4.0之前的写法这个时期的代码没有什么好说的都是程式代码一撸到底简洁明了。 public static int SyncGetCount(){using (var connection new MySqlConnection(serverxxx.xxx.xxx.xxx;useridxxx;passwordxxx;databasexxx;charsetutf8;port3306;)){connection.Open();using (var command connection.CreateCommand()){command.CommandText select count(1) from messages;var count command.ExecuteScalar();Console.WriteLine($记录条数:{count});return Convert.ToInt32(count);}}}-------- output -------------记录条数:75896 2. NetFramework 4.0下ContinueWith的写法当年异步和并发编程概念特别火火热度参考现在的直播带货这个时期的C#率先使用新的Task一网兜在数据库操作的几大类中开始有了Async结尾的方法如OpenAsync,ExecuteScalarAsync,ReadAsync 等等,但遗憾的是那时写异步只能像下面这样写。 public static Taskobject ContinueWithGetCount(){var connection new MySqlConnection(serverxxx.xxx.xxx.xxx;useridxxx;passwordxxx;databasexxx;charsetutf8;port3306;);var task connection.OpenAsync().ContinueWith(t1 {var command connection.CreateCommand();command.CommandText select count(1) from messages;return command.ExecuteScalarAsync().ContinueWith(t2 {command.Dispose();connection.Dispose();Console.WriteLine($记录条数:{t2.Result});return t2.Result;});}).Unwrap();return task;}-------- output -------------记录条数:75896 相比同步代码这异步代码写的是不是很憋屈为了应对渐进式的Async方法我不得不进行ContinueWith的深层嵌套如果Async更多那对可读性将是毁灭性的打击这就是所谓的回调地狱。3. NetFramework 4.5 下 await,async的写法写到这里让我想起了邢老大的那本自传书《左手梦想右手疗伤》这苦这心酸只有真正经历过的人才会懂没有人能够随随便便成功接下来大家的期望就是如何做到有同步式的代码又有异步功效鱼和熊掌我都要当然是可以的看看如何用await,async进行改造。public static async Taskint AsyncGetCount(){using (var connection new MySqlConnection(serverxxx.xxx.xxx.xxx;useridxxx;passwordxxx;databasexxx;charsetutf8;port3306;)){await connection.OpenAsync();using (var command connection.CreateCommand()){command.CommandText select count(1) from messages;var count await command.ExecuteScalarAsync();Console.WriteLine($记录条数:{count});return Convert.ToInt32(count);}}}-------- output -------------记录条数:75896 上面这代码太简洁了眼花的朋友还以为是同步代码呢改造的地方也仅仅是方法签名处加上一个async异步方法前加上await相当于痛苦版的ContinueWith。二案例二 【循环下的异步】上一个案例只是使用ExecuteScalarAsync从数据库中读取一个值来得到表中的记录数在业务开发中更多的是使用ExecuteReader从数据库中获取批量记录这个就涉及到了如何在循环中使用异步想想就太苦难了(┬┬)。1. NetFramework 4.0之前的写法这里我从messages表中读取5条记录然后输出到控制台详细代码如下public static Liststring SyncGetMessageList(){var messageList new Liststring();using (var connection new MySqlConnection(serverxxx.xxx.xxx.xxx;useridxxx;passwordxxx;databasexxx;charsetutf8;port3306;)){connection.Open();using (var command connection.CreateCommand()){command.CommandText select message from messages limit 5;;using (var reader command.ExecuteReader()){while (reader.Read()){messageList.Add(reader.GetString(message));}}}}messageList.ForEach(Console.WriteLine);return messageList;}------------- output ----------------你需要忘记失去的感激拥有的和期待将至的。 以前的找不到了。 对于编译错误删除Pods文件夹然后重新pod install已经成为经验。次。 HelloIs there anyone here? 放松心情 2. NetFramework 4.0下ContinueWith的写法要想用ContinueWith完成这功能最简单有效的办法就是使用递归用递归的方式把若干个ContinueWith串联起来而要用递归的话还要单独定义一个方法写的有点乱大家将就着看吧。 public class Program{public static void Main(string[] args){var task ContinueWithAsyncGetMessageList();task.Result.ForEach(Console.WriteLine);Console.Read();}public static TaskListstring ContinueWithAsyncGetMessageList(){var connection new MySqlConnection(serverxxx.xxx.xxx.xxx;useridxxx;passwordxxx;databasexxx;charsetutf8;port3306;);var task connection.OpenAsync().ContinueWith(t1 {var messageList new Liststring();var command connection.CreateCommand();command.CommandText select message from messages limit 5;;return command.ExecuteReaderAsync().ContinueWith(t2 {var reader (MySqlDataReader)t2.Result;return GetMessageList(reader, messageList).ContinueWith(t3 {reader.Dispose();command.Dispose();connection.Dispose();});}).Unwrap().ContinueWith(t3 messageList);}).Unwrap();return task;}/// summary/// 采用递归处理循环/// /summary/// param namereader/param/// param namemessageList/param/// returns/returnspublic static TaskListstring GetMessageList(MySqlDataReader reader, Liststring messageList){var task reader.ReadAsync().ContinueWith(t {if (t.Result){var massage reader.GetString(message);messageList.Add(massage);return GetMessageList(reader, messageList);}else{return Task.FromResult(new Liststring());}}).Unwrap();return task;}}------------ output ---------------- 你需要忘记失去的感激拥有的和期待将至的。 以前的找不到了。 对于编译错误删除Pods文件夹然后重新pod install已经成为经验。次。 HelloIs there anyone here? 放松心情 在递归下探的过程中把messageList集合给填满了而后将messageList返回给调用端即可如果没看明白我画一张图吧3. NetFramework 4.5 下 await,async的写法????刚刚是不是噩梦般经历救世主来啦还是要鱼和熊掌一起兼得。public static async TaskListstring AsyncGetMessageList(){var messageList new Liststring();using (var connection new MySqlConnection(serverxxx.xxx.xxx.xxx;useridxxx;passwordxxx;databasexxx;charsetutf8;port3306;)){await connection.OpenAsync();using (var command connection.CreateCommand()){command.CommandText select message from messages limit 5;;using (var reader await command.ExecuteReaderAsync()){while (await reader.ReadAsync()){messageList.Add(reader[message].ToString());}}}}return messageList;}------------ output ---------------- 你需要忘记失去的感激拥有的和期待将至的。 以前的找不到了。 对于编译错误删除Pods文件夹然后重新pod install已经成为经验。次。 HelloIs there anyone here? 放松心情 天底下还有如此简洁的代码就可以实现ContinueWith那种垃圾般代码所实现的功能我都想仰天长啸我太难了。三总结还是那句话你没有被伤过永远不会体会到那种刻骨铭心的痛。
http://www.huolong8.cn/news/89464/

相关文章:

  • 网站交互用什么做抚州seo排名
  • 服装html网站模板下载天元建设集团有限公司第二公司
  • 阿里云网站建设里云官网模版今天军事新闻最新消息
  • 江西网站建设价位北京微信网站设计报价
  • 成都网址建设医疗网站建设及优化
  • 有什么网站可以做六级题目嘛肥城网站建设方案
  • 上海网站seo优化wordpress自定义代码在哪里设置
  • 网站建设优化建站台州优化官方网站
  • 哈尔滨住房建设发展集团网站深圳龙华区邮政编码
  • 品牌宝网站认证网页设计心得体会正文
  • 网站建设公司crm系统个人兼职网站制作
  • 网站免费模版代码南京seo公司哪家
  • 费县网站建设百度一下知道首页
  • 网站建设公司有前途吗企业信息查询公示系统
  • 营销型网站头部布局的元素黑客钓鱼网站的制作
  • 个人网站可以做论坛吗?psd转wordpress主题
  • 高端网站建设南京个人备案的网站内容
  • 个人网站要有什么seo算法培训
  • 网站外部链接添加方式山东神华网站建设
  • 如何建立虚拟架构网站容桂网站制作信息
  • 相亲网站用什么做的网站开发框架的工具
  • 海口网站建设方案策划wordpress链接重建
  • 建设网站预期效果怎么写达州网站建设qinsanw
  • 广东网站开发搭建湛江建设局网站
  • 腾讯云免费建站pc端和移动端的网站区别是什么意思
  • 零陵区住房和城乡建设局网站网站装修的代码怎么做
  • 网站seo优化免费zhicms系统wordpress
  • 网站规划与建设实验心得体会织梦门户网站源码下载
  • 网站外网怎么做如何自定义wordpress的登录页面
  • 建立网站的流程多少钱上网行为管理