首页 > 代码库 > 并行活动

并行活动

今天在工作中用到了并行,于是就总结了一下关于并行的方法使用,也为自己做个备忘。

命名空间:System.Threading.Tasks;

重要的类:Parallel;

重要的方法:3个;[其他都是重载]

 

一.Invoke方法:任务已生成;

用法一:

 注意:1.都是指单独的任务或活动;【不要相互调用】

        2.需要事先生成这些任务或活动,同时并发执行这些任务;

        3.任务或活动的方法是无参无返回值的;

 1   class Program 2     { 3         static void Main(string[] args) 4         { 5             System.Threading.Tasks.Parallel.Invoke(Program.Fly,Program.Run,Program.Wolk); 6             Console.ReadKey(); 7         } 8         static void Fly() 9         {10             Console.WriteLine("小鸟在飞");11         }12         static void Run() 13         {14             Console.WriteLine("猪在跑");15         }16         static void Wolk() 17         {18             Console.WriteLine("你在走路");19         }20     }
View Code

 

用法二:

 1  class Program 2     { 3         static void Main(string[] args) 4         { 5             6             Action[] action = { Program.Fly, Program.Run, Program.Wolk }; 7             System.Threading.Tasks.Parallel.Invoke(action); 8             Console.ReadKey(); 9         }10         static void Fly()11         {12             Console.WriteLine("小鸟在飞");13         }14         static void Run() 15         {16             Console.WriteLine("猪在跑");17         }18         static void Wolk() 19         {20             Console.WriteLine("你在走路");21         }22     }
View Code

 

 二.for方法:根据数据源生成任务或活动

 1    class Program 2     { 3         static void Main(string[] args) 4         { 5   System.Threading.Tasks.Parallel.For(1,10, Swim); 6  7             Console.ReadKey(); 8         } 9     static void Swim(int n)10         {11             Console.WriteLine("第{0}个活动执行",n);12         }13 }
View Code

 

三.foreach方法:根据数据源生成任务或活动

  

 1  class Program 2     { 3         static void Main(string[] args) 4         {  5            List<Animal> animals = new List<Animal>(); 6             for (int i = 0; i < 2; i++) 7             { 8                 Animal animal = new Animal(); 9                 animal.Name = "小黑" + i;10                 animal.Age = i;11                 animals.Add(animal);12             }13 14             System.Threading.Tasks.Parallel.ForEach<Animal>(animals, Swim);15 16             Console.ReadKey();17         }18    static void Swim(Animal animal)19         {20 21             Console.WriteLine("{0}在游泳,它{1}岁了。", animal.Name, animal.Age);22         }23   }24 public class Animal25 {26     public string Name { get; set; }27     public int Age { get; set; }28 29 }
View Code