C#使用Task创建任务

.NET 4 中 包含了新名称空间System.Threading.Task。它包含的类抽象出了线程的功能。使用Task类创建的任务是后台线程,所以在前台线程全部终止的时候,如果任务还没有全部执行万,就会被被动终止。

启动任务

  怎样启动一个任务?代码中我们首先要添加using System.Threading.Tasks;引用。我们可以使用TaskFactory类或Task类的构造函数和Start()方法。在启动任务时,会创建Task类的一个实例。首先我们看一段代码

using System;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
namespace ConsoleTask
{
    class Program
    {
        static void Main(string[] args)
        {
            //使用TaskFactory创建一个任务
            TaskFactory tf = new TaskFactory();
            Task t1 = tf.StartNew(NewTask);
            //使用Task类de Factory创建一个任务
            Task t2 = Task.Factory.StartNew(NewTask);
            ///////////////////////////////////////
            Task t3 = new Task(NewTask);
            t3.Start();
            Task t4 = new Task(NewTask, TaskCreationOptions.PreferFairness);
            t4.Start();
            Thread.Sleep(1000);//因为任务是后台线程,所以我们这里阻塞主线程一秒钟来等待任务全部执行完成
        }
        static void NewTask()
        {
            Console.WriteLine("开始一个任务");
            Console.WriteLine("Task id:{0}",Task.CurrentId);
            Console.WriteLine("任务执行完成");
        }
    }
}
时间: 2024-10-18 12:32:18

C#使用Task创建任务的相关文章

Apache Spark-1.0.0浅析(五):资源调度——Task创建和分发

前面提到,submitMissingTask是分发任务的开始,首先submitMissingTasks判断该stage是否为shuffle map stage,是则getPreferredLocs,实例化一个ShuffleMapTasks返回一组task集合,否则是final stage,getPreferredLocs,实例化Result Task返回一组tasks集合:向listenerBus发送SparkListenerStageSubmitted事件:提前序列化一个task以保证其可以被

【手记】MTK之TASK创建及使用

/************************************************************************* * STRUCT * syscomp_info_struct * * DESCRIPTION * The structure defines component task configuration information * * FIELDS * comp_name_ptr - pointer to component task name * c

关于Task的认识

首先来说说 Task.Factory.StartNew这种方式来创建Task,这里的WaitAll()指的是等待所有Task执行完成,并且里面的Task参数(t1,t2)是异步的,先以匿名委托方式 static void Main(string[] args) { Task t1 = Task.Factory.StartNew(delegate { MyMethodA(); }); Task t2 = Task.Factory.StartNew(delegate { MyMethodB(); }

[笔记][Java7并发编程实战手册]4.3 创建固定的线程执行器newFixedThreadPool线程池

[笔记][Java7并发编程实战手册]系列目录 简介 newFixedThreadPool(int nThreads, ThreadFactory threadFactory) 创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程,在需要时使用提供的 ThreadFactory 创建新线程. newCachedThreadPool()创建的线程池的特性是:自动回收不使用的线程(终止并从缓存中移除那些已有 60 秒钟未被使用的线程),(在无可用线程的情况下)自动的为新来的task创

task分配算法核心原理描述

把stage生成的每个task创建一个taskset对象 双重for循环,遍历所有taskset,以及每种本地化级别 本地化级别有: 1.process_local:进程本地化RDD的partition和task进入同一个executor中,速度最快 2.node_local:RDD的partition和task不在一个executor上,但是在一个worker上 3.NO_PERF:没有所谓的本地化级别 4.RACK_LOCAL:机架本地化,至少RDD的partition和task在一个机架上

Apache Spark-1.0.0浅析(六):资源调度——Task执行

前面说到向executorActor(task.executorID)发送LaunchTask(task)消息,在CoarseGrainedExecutorBackend中定义receive接收launchTask消息,执行executor.launchTask override def receive = { case RegisteredExecutor(sparkProperties) => logInfo("Successfully registered with driver&q

TPL Part 4 -- Task的协同

简单的Continuation Task.ContinueWith(Task): 当指定的Task执行完毕时. void Main() { Task rootTask = new Task(()=>{ Console.WriteLine("root task completed"); }); root Task.ContinueWith((Task previousTask)=>{ Console.WriteLine("continute task complet

多线程随笔二(Task)

Task类是.net 4.0新加进来的特性,对原有的Thread,ThreadPool做了进一步的封装,使得.net平台上的多线程编程变得更加方便.废话不多说,进入正题. 一. Task启动 Task启动主要有以下几种用法: 1.构造Task对象,启动Task 1 Task myTask = new Task(DoSomething); 2 myTask.Start(); 2.通过Task.Factory启动Task Task second = Task.Factory.StartNew(DoS

[BI项目记]-新任务创建

 上一篇介绍了如何处理一个Bug工作,此篇主要介绍如何借助TFS对于一个新需求创建一个新的工作项. 这里假定,有一个新的需求,需要创建五个报表. 然后开发的工作流程如下: 这个流程总结起来大致如下: 首先在TFS里创建一个Task,上传需求文档. 然后开发开发,签入相应的代码,以及设计开发文档,同时准备发布文档. 测试阶段,签入UAT文档. 最后Go live. 然后,关注下在这个过程中相关的文档. 接下来开始创建这个任务,打开TFS主页,单击Task创建一个任务. 同Bug一样,输入关于新