夸克之书

  • 首页
  • 科普
  • 笔记
  • C#
  • 物联网
  • 算法
  • Linux
  • 树莓派
夸克之内,别有洞天
  1. 首页
  2. C#
  3. 正文

简单开始异步编程(1)

2018-12-19 2060点热度 0人点赞 0条评论

学习一般都是由浅入深。这篇文章介绍如何使用async和awiat关键字实现简单的异步编程。

通常情况下,我们编写程序都是自上而下一步一步的执行,而异步编程的核心就是打破这个常规,让耗时的操作另开一个线程执行,让主线程继续执行。是不是很熟悉,其实异步的背后就是多线程,只是简化了编程,让创建和销毁线程的操作交给后台代码,把线程交给线程池管理了。

下面通过一个简单的Demo来展示基础的异步编程。

using System;
using System.Threading;
using System.Threading.Tasks;

namespace AsyncTest
{
    class Program
    {
        //测试异步编程
        static void Main(string[] args)
        {
            //启动异步操作
            AsyncMethod();  
            //主线程继续执行
            for(int i = 0; i < 100; i++)
            {
                Thread.Sleep(1000);
                Console.WriteLine("This is main thread...");
            }
            Console.ReadKey(false);
        }

        static async void AsyncMethod()
        {
            Console.WriteLine("Task thread start...");
            int result = await AsyncTest();
            Console.WriteLine("Task thread end...Result is " + result);
        }

        /// <summary>
        /// 返回Int类型
        /// </summary>
        /// <returns></returns>
        static async Task<int> AsyncTest()
        {
            int i = 0;
            for(int j = 0; j < 5; j++)
            {
                i++;
                await Task.Delay(1000);  //模拟耗时操作,也可以用await Task.Run(() => Thread.Sleep(1000));
            }
            return i;
        }
    }
}
本作品采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2020-12-13

afirefish

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论
放松一下
https://www.quarkbook.com/wp-content/uploads/2021/05/凤凰传奇-海底(Live).flac
分类
  • C#
  • Linux
  • 树莓派
  • 物联网
  • 科普
  • 笔记
  • 算法
  • 默认
最新 热点 随机
最新 热点 随机
System.Text.Json与Newtonsoft.Json Json序列化与反序列化性能对比 R86S散热改造 Windows移除多余输入法'Unknown Locale (qaa-Latn)' 【算法】具有层级关系的城市,例如"中国 广州","中国 浙江 杭州" 一个 List 最后应该是转成树状图输出 树莓派安装Golang环境 树莓派 Zero USB/以太网方式连接配置教程
Windows移除多余输入法'Unknown Locale (qaa-Latn)'【算法】具有层级关系的城市,例如"中国 广州","中国 浙江 杭州" 一个 List 最后应该是转成树状图输出R86S散热改造System.Text.Json与Newtonsoft.Json Json序列化与反序列化性能对比
解决Mysql中文乱码 批处理器(BAT)自动请求管理员权限 国内软件耻辱柱 OpenWrt x86安装Frpc 将对象转化为Get请求字符串 C#中抽象类(abstract)和接口(interface)的相同点与区别
最近评论
wking 发布于 3 个月前(05月24日) 请问贵博客是怎么优化的,网页响应速度非常快。我博客同样的WordPress和kratos主题,但点一...
去月球 发布于 7 个月前(01月18日) 如果使用CSI的摄像头应该怎么修改命令呢
Me 发布于 7 个月前(12月31日) 好像还得写启动项 要不重启就还原了。
十三 发布于 8 个月前(12月23日) 大神,网盘链接失效了,重新分享一下吧,
一键快乐 发布于 1 年前(07月09日) 老哥 我替换之后能进去了但是网络和声音上有两个×怎么办
书签
  • 打赏
  • 毒鸡汤
  • 米店
  • 金鱼直播间

COPYRIGHT © 2022 quarkbook.com. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

蜀ICP备15036129号-9

登录
注册|忘记密码?