C#中异步编程4async与await异步程序开发的实例分析

随着c#异步程序开发系列的深入,你会发现编写异步程序越发简单。事物的发展就是这样的规律,从简单到复杂再到简单。

在C# 5.0中我们可以通过async与await关键字实现快捷的异步程序开发,如下:

        static void Main(string[] args)        {            var task = GetResultAsyc();            Console.WriteLine(String.Format("Main 线程:{0}", Thread.CurrentThread.ManagedThreadId));                        for (int i = 0; i  GetResultAsyc()        {            Console.WriteLine(String.Format("线程:{0}", Thread.CurrentThread.ManagedThreadId));                        var result = await Task.Run(() => {                Console.WriteLine(String.Format("Task 线程:{0}", Thread.CurrentThread.ManagedThreadId));                Thread.Sleep(5000);                return 10;            });            return result;        }

登录后复制

程序说明:

1、用 async 标注的方法表示可以进行异步调用的方法,这种方法的名称应该以Async结尾。

2、如果异步方法执行后有返回值,该异步方法的返回类型应该为Task。如果没有返回值,则应是Task。

3、在 async 标注的方法中可以开启Task或调用其他异步方法,在调用前使用 await 则调用线程将直接返回并执行其后续代码。await 后面的被调用程序则在一个或多个(视嵌套的情况等因素而定)新线程中执行。

4、在新线程中的功能执行完毕后,return result将由新线程负责返回(此处并非返回调用线程,而是由新线程设置调用线程获取的Task.Result)。

5、在调用线程中使用 await Task 或 Task.Result 时,调用线程将等待(阻塞)新线程执行完毕并获取结果。

程序输出如下:

C#中异步编程4async与await异步程序开发的实例分析

跟我们之前介绍的一样,.Net Framework4.5之后相关的IO,Net等都已支持async和await调用,所有基于上述版本的C# 异步程序开发会简化不少。

现在.Net Web 发中已开始普及异步方式编程,这对提高Web IO吞吐量带来了帮助。

以上就是C#中异步编程4async与await异步程序开发的实例分析的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2493559.html

(0)
上一篇 2025年3月5日 01:33:37
下一篇 2025年3月5日 01:33:50

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • C#中VB.NET给Word文档添加/撤销书签的实例

    在现代办公环境中,阅读或者编辑较长篇幅的word文档时,想要在文档中某一处或者几处留下标记,方便日后查找、修改时,需要在相对应的文档位置插入书签。那对于开发者而言,在c#或者vb.net语言环境中,如何来快速、简便的插入书签呢,我分享一下我…

    2025年3月5日
    100
  • C#如何通过对象属性名修改值的实例

    摘自:csdn 给一个对象属性赋值可以通过PropertyInfo.SetValue()方式进行赋值,但要注意值的类型要与属性保持一致。    创建对象实例的两种方法:  1.  var obj = Assembly.Load(“Assem…

    编程技术 2025年3月5日
    200
  • C#中引用类型之特例string的详细介绍

        在c#编程的时候经常会使用字符串(string)类型,它也是引用类型,但是处处都不作为引用的用法来使用,实属特例,下来我一一罗列出来,供自己记忆方便:      1)字符串的直接赋值:本身字符串就是引用类型,应该使用  new 对象…

    2025年3月5日
    200
  • C#中关于List<T>的并集与交集以及差集解析

    集合的并集是合并集合的项,如下图所示: List ls1 = new List() { 1,2,3,5,7,9 };List ls2 = new List() { 2,4,6,8,9,10};IEnumerable unionLs = ls…

    2025年3月5日 编程技术
    200
  • C#中Socket框架的使用教程

    最近一个项目因为要用到socket传输问题,所以决定学习一下,将自己学习的内容总结分享出来,下面这篇文章主要给大家介绍了关于c# .net中socket简单实用框架使用的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。 前言…

    2025年3月5日
    200
  • C#编写SqlHelper类的使用详解

    本篇文章主要介绍了使用c#编写sqlhelper类,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 无聊的周末,学习、编码无力。想找点事干但又不知道干点什么,猛然发现自己学过的SqlHelper快忘记了。于是乎虎…

    编程技术 2025年3月5日
    200
  • c#接口的问题的解决办法详解

    这段时间的项目有用到接口,开始不是特别理解接口,只是单单知道接口定义非常简单,甚至觉得这个接口只是多此一举(个人开发的时候)。现在开始团队开发,才发现接口原来是这么的重要和便捷! 接下来就来谈谈我这段时间对接口使用的粗浅见解,说的对希望大家…

    编程技术 2025年3月5日
    200
  • c#如何生成二维码的示例分享

    引用zxing类库 实现功能: 1生成带有Logo二维码 2 将二维码绘制到图片上 3 图片上绘制文字  生成二维码 public string CreateQrCode(string md5Str,string name,int sex)…

    编程技术 2025年3月5日
    200
  • C# 数组作为参数传递出现的问题解决

    原则:尽可能控制对数据的修改,如果可以预测某个数据不会或不应该被改变,就要对其控制,而不要期望使用这个数据的调用者不会改变其值。 如果参数在使用过程中被意外修改,将会带来不可预知的结果,而且这种错误很难被检查到,所以我们在设计方法参数的时候…

    编程技术 2025年3月5日
    200
  • C#根据表格偶数与奇数加载不同颜色的实例分析

    这篇文章主要介绍了c# 根据表格偶数、奇数加载不同颜色,需要的朋友可以参考下 效果图:         //偶数随机  Random evenRanm = new Random();  //奇数随机  Random oddRanm = ne…

    2025年3月5日
    200

发表回复

登录后才能评论