C# Task

Task是一种基于任务的编程模型。它与thread的主要区别是,它更加方便对线程进程调度和获取线程的执行结果。

Task类和Task类,前者接收的是Action委托类型,后者接收的是Func委托类型。

Task创建:

(1)直接创建

var task1 = new Task(() =>{System.Threading.Thread.Sleep(1000);});

task1.Start();

(2)工厂创建

Task.Factory.StartNew(() = {});

(3)Run运行

Task.Run(() =>{});

注:

开启新任务的方法:Task.Run()或者Task.Factory.StartNew(),开启的是后台线程

要在主线程中等待后台线程执行完毕,可以使用Wait方法(会以同步的方式来执行)。不用Wait则会以异步的方式来执行。

thread和Task的区别,thread new多少个就会创建多少个线程,而task是利用线程池中的线程。

Task其他方法:

Task.Wait(); 阻塞当前线程

Task.WaitAll(); 阻赛当前线程

Task.WaitAny(); 阻塞当前线程直到有任意一个任务执行完毕

Task.ContinueWith(task=>{});执行完上一个任务后继续执行,并将上一个任务传递给下一个代码块

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、wait--notify--sleep Object obj = new Object(); obj.wait...
    fe0180bd6eaf阅读 2,744评论 0 1
  •   一个任务通常就是一个程序,每个运行中的程序就是一个进程。当一个程序运行时,内部可能包含了多个顺序执行流,每个顺...
    OmaiMoon阅读 5,642评论 0 12
  • 进程和线程 进程 所有运行中的任务通常对应一个进程,当一个程序进入内存运行时,即变成一个进程.进程是处于运行过程中...
    小徐andorid阅读 7,863评论 3 53
  • 《月夜》 文/虞北 月含清辉露明中, 秋寄白苹梦空凝。 梨花风起春已尽, 茉莉雨落秋且吟。 行...
    虞北之海阅读 4,379评论 0 2
  • “成为践行者,先行其言而后从之 。” ——《OKR工作法》 在《原则》一书中,一开篇瑞就提到首先你要知道自己“想要...
    氪星人阅读 3,959评论 0 2

友情链接更多精彩内容