task是开启一个新的线程去做你需要做的事情,后面的代码会直接运行,这样可以防止线程阻塞

private void button1_Click(object sender, EventArgs e)
        {
            Task.Run(()=> {

Thread.Sleep(5000);
                Invoke(new Action(()=> {
                    label1.Text = "123";
                }));
            });

label2.Text = "456";//标签一5秒后内容变成123,标签二内容立刻变成456
        }

Task.WaitAll(),Task.WaitAny() 等待所有/任意一个线程完成后继续下面的代码

Task.WhenAll().ContinueWith(),Task.WhenAny().ContinueWith() 主线程不等待,当完成所有/任意一个线程后继续执行

async、await也可以防止线程阻,不过可以实现等待await后面的代码执行完成后再执行后面的代码

public async Task<string> getData()
        {
            await Task.Delay(5000);
            return "123";
        }

private async void button2_Click(object sender, EventArgs e)
        {
            label1.Text = await getData();

label2.Text = "456";//标签一5秒后内容变成123,标签二5秒后内容变成456
        }

async、await与task相关推荐

  1. Task和async/await详解

    一.什么是异步 同步和异步主要用于修饰方法.当一个方法被调用时,调用者需要等待该方法执行完毕并返回才能继续执行,我们称这个方法是同步方法:当一个方法被调用时立即返回,并获取一个线程执行该方法内部的业务 ...

  2. C#多线程和异步(二)——Task和async/await详解

    一.什么是异步 同步和异步主要用于修饰方法.当一个方法被调用时,调用者需要等待该方法执行完毕并返回才能继续执行,我们称这个方法是同步方法:当一个方法被调用时立即返回,并获取一个线程执行该方法内部的业务 ...

  3. 【转】异步编程系列(Thread、Task、async/await、ajax等)

    序 经过一番努力,我写的异步编程系列也算有头有尾,当然不是说这个系列已经更新完毕,这个头尾只是表示新旧知识点都有简单涉及到,接下去我还会丰富这一系列并且有机会整个小应用(愿景是弄一个开源组件吧,结合s ...

  4. 【转】Task和async/await详解

    一.什么是异步 同步和异步主要用于修饰方法.当一个方法被调用时,调用者需要等待该方法执行完毕并返回才能继续执行,我们称这个方法是同步方法:当一个方法被调用时立即返回,并获取一个线程执行该方法内部的业务 ...

  5. NET(C#):await返回Task的async方法

    一.  FrameWork 4.0之前的线程世界    在.NET FrameWork 4.0之前,如果我们使用线程.一般有以下几种方式: 使用System.Threading.Thread 类,调用 ...

  6. C# Task和async/await详解

    C# Task和async/await详解 什么是异步 Task介绍 1 Task创建和运行 2 Task的阻塞方法(Wait/WaitAll/WaitAny) 1 Thread阻塞线程的方法 2 T ...

  7. C#多线程和异步(二)——Task和async/await详解(转载)

    一.什么是异步 同步和异步主要用于修饰方法.当一个方法被调用时,调用者需要等待该方法执行完毕并返回才能继续执行,我们称这个方法是同步方法:当一个方法被调用时立即返回,并获取一个线程执行该方法内部的业务 ...

  8. .NET(C#):await返回Task的async方法

    一.  FrameWork 4.0之前的线程世界    在.NET FrameWork 4.0之前,如果我们使用线程.一般有以下几种方式: 使用System.Threading.Thread 类,调用 ...

  9. C# async await 学习笔记2

    C# async await 学习笔记1(http://www.cnblogs.com/siso/p/3691059.html) 提到了ThreadId是一样的,突然想到在WinForm中,非UI线程 ...

  10. @async 默认线程池_.NET Web应用中为什么要使用async/await异步编程?

    布莱恩特:.NET Core开发精选文章目录,持续更新,欢迎投稿!​zhuanlan.zhihu.com 前言 1.什么是async/await? await和async是.NET Framework ...

最新文章

  1. js url传值中文乱码完美解决(JAVA)
  2. 如何着手学习一个新的PHP框架
  3. 优雅参数判空_java 方法参数怎么优雅校验?
  4. 两路虚拟化服务器,当四核多路服务器碰上虚拟化
  5. 《Java从入门到放弃》JavaSE入门篇:文件操作
  6. java ajax data_jquery ajax 方法中传递的data参数,如何在java类中获取
  7. Requst Servervariables
  8. transition实现隐藏显示菜单栏效果
  9. emd经验模态分解 matlab,经验模态分解(EMD)在地球物理资料中的应用(附MATLAB程序)...
  10. npm安装工具时候报错code EINTEGRITY
  11. 10个提供Logo设计灵感的创意网站
  12. ZeroTier + win10 远程桌面(替代TeamViewer)
  13. 高效C++ Effective C++
  14. 《OpenGL ES 3.x游戏开发(下卷)》一2.1 飘扬的旗帜
  15. html商品分类列表页面,仿京东商城系列7------商品分类页面
  16. Android 动画基础知识学习(下)
  17. 第26次Scrum会议(11/14)【欢迎来怼】
  18. 计算机图形学——MFC绘图基础
  19. 开心消消乐java下载_开心消消乐下载_开心消消乐下载最新iPhone版-太平洋下载中心...
  20. Python帮助万千程序员远离猝死悲剧

热门文章

  1. python pptp拨号_pptp拨号上网
  2. lubuntu操作及桌面配置(1)
  3. 到2026年,IT安全支出将达到近3000亿美元
  4. [又值奥运季] 2016年里约奥运会--8月7日赛事
  5. 关于请求头header,token,setHeader()
  6. Linux命令下隐写术,在Linux中,隐写术变得容易
  7. 使用mysql创建外键约束_Mysql创建外键约束的两种方式
  8. 关于Android10 暗黑模式的简述
  9. linux中寻找某个目录以及其下所有目录有无同名文件
  10. 我的世界—Python(五)