LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C#Task创建线程

admin
2025年4月21日 18:39 本文热度 111
Task 使得可以以异步方式编写代码,当任务运行时,控制权可以返回给调用线程,以便执行其他操作Task相当于Thread+ThreadPool。

使用Task创建线程方法

1-Task task= new Task(委托),使用task.Start()方法触发

2-Task task= Task.Run(委托)

3-Task task= Task.Factory.StartNew(委托)

案例:分别使用以上三种方法创建多线程

方法1中:会先执行步骤1、再执行步骤3、最后执行步骤2

方法2中:使用Task.WaitAll()方法阻塞调用线程,直到指定的所有任务完成,当所有任务都完成时,代码将继续执行。

方法3中:使用Task.WaitAny()方法阻塞调用线程,直到指定的至少一个任务完成。一旦其中一个任务完成,代码将继续执行。

namespace _017_Task创建线程{    public partial class Task创建线程 : Form    {        public Task创建线程()        {            InitializeComponent();        }
        private void btNewTask_Click(object sender, EventArgs e)        {            Task t1 = new Task(() =>            {                MessageBox.Show("步骤1");//先执行                Thread.Sleep(3000);                MessageBox.Show("步骤2");//最后执行            });            t1.Start();            MessageBox.Show("步骤3");//再执行        }
        private void btTaskRun_Click(object sender, EventArgs e)        {            Task t1 = new Task(() =>            {                MessageBox.Show("步骤1");//先执行                Thread.Sleep(3000);                MessageBox.Show("步骤2");//最后执行            });            t1.Start();            //需要使用,NET4.5以上框架,否则会提示Task为包含run的定义            Task t2 = Task.Run(() =>            {                MessageBox.Show("步骤10");//先执行                Thread.Sleep(6000);                MessageBox.Show("步骤20");//最后执行            });            //Task.WaitAll(t2);//等待t2执行完执行后面代码            Task.WaitAll(t2,t1);//先执行t2再执行t1            MessageBox.Show("步骤30");//再执行        }
        private void btTaskFactory_Click(object sender, EventArgs e)        {            //StartNew它允许你创建和启动一个新任务            //ContinueWith方法来在前一个任务完成后自动执行后续的任务。            Task t1 = Task.Factory.StartNew(() =>            {                MessageBox.Show("步骤1");//先执行                Thread.Sleep(3000);                // Task.Delay(2000).Wait();                MessageBox.Show("步骤2");//最后执行            });            Task t2 = Task.Factory.StartNew(() =>            {                MessageBox.Show("步骤10");//先执行                Thread.Sleep(5000);                // Task.Delay(2000).Wait();                MessageBox.Show("步骤20");//最后执行            });            Task.WaitAny(t2,t1);//任何一个任务执行完,即执行后续代码            MessageBox.Show("步骤3");//再执行        }    }}


该文章在 2025/4/22 17:40:23 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved