C#Task创建线程
				
									
					
					
						|  | 
							admin 2025年4月21日 18:39
								本文热度 1377 | 
					
				 
				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();                        Task t2 = Task.Run(() =>            {                MessageBox.Show("步骤10");                Thread.Sleep(6000);                MessageBox.Show("步骤20");            });                        Task.WaitAll(t2,t1);            MessageBox.Show("步骤30");        }
        private void btTaskFactory_Click(object sender, EventArgs e)        {                                    Task t1 = Task.Factory.StartNew(() =>            {                MessageBox.Show("步骤1");                Thread.Sleep(3000);                                MessageBox.Show("步骤2");            });            Task t2 = Task.Factory.StartNew(() =>            {                MessageBox.Show("步骤10");                Thread.Sleep(5000);                                MessageBox.Show("步骤20");            });            Task.WaitAny(t2,t1);            MessageBox.Show("步骤3");        }    }}
该文章在 2025/4/22 17:40:23 编辑过