C# Task的使用

1。Task的使用

创建一个Task,有三种方式

 1 //第一种  
 2 Task t1 = new Task(() =>
 3             {
 4                 Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss fff")+ ":Task创建完成1");
 5             });
 6             //启动task
 7             t1.Start();
 8 
 9 //第二种
10  //Task工厂,Task自动启动
11             Task t2 = Task.Factory.StartNew(() =>
12             {
13                 Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss fff") + ":Task创建完成2");
14             });
15 
16 //第三种
17    Action action = new Action(Test);
18             Task t3 = new Task(action);
19             t3.Start();
20 public static void Test()
21         {
22             Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss fff")  +":Task创建完成3");
23 
24         }
25   Thread.Sleep(3000);
26             Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss fff") +":线程完成");
View Code

注:t1、t2、t3任务同时开启时,为异步执行。如下图:

如果想同步执行,使用 Wait();

 1   Task t1 = new Task(() =>
 2             {
 3                 Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss fff")+ ":Task创建完成1");
 4             });
 5             //启动task
 6             t1.Start();
 7 
 8             t1.Wait();
 9             //Task工厂,Task自动启动
10             Task t2 = Task.Factory.StartNew(() =>
11             {
12               
13                 Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss fff") + ":Task创建完成2");
14                
15             });
16             t2.Wait();
17 
18    Action action = new Action(Test);
19             Task t3 = new Task(action);
20             t3.Start();
21             t3.Wait();
22 
23  Thread.Sleep(3000);
24             Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss fff") +":线程完成");
25 
26 
27 
28   public static void Test()
29         {
30             Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss fff")  +":Task创建完成3");
31 
32 
33         }
View Code

当有多个Task进行同步执行时。可使用

Task.WaitAll(t1,t2,t3);

注:这里t1、t2、t3任务之间执行先后顺序为异步。

猜你喜欢

转载自www.cnblogs.com/-xyl/p/9318885.html