1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 using System.Threading; 10 using System.Threading.Tasks; 11 12 namespace WindowsFormsApplication1 13 { 14 public partial class Form1 : Form 15 { 16 public Form1() 17 { 18 InitializeComponent(); 19 } 20 21 private void button1_Click(object sender, EventArgs e) 22 { 23 Thread t = new Thread(test1); 24 t.Start(); 25 26 Thread t1 = new Thread(new ThreadStart(test1)); 27 t1.Start(); 28 29 30 Thread t2 = new Thread(() => { test1(); }); 31 t2.Start(); 32 33 Thread t3 = new Thread(delegate() { test1(); }); 34 t3.Start(); 35 36 Thread t4 = new Thread(() => { Console.WriteLine("test1" + Thread.CurrentThread.ManagedThreadId); }); 37 t4.Start(); 38 39 40 Task task = new Task(test1); 41 task.Start(); 42 43 44 Thread t5 = new Thread(test2); 45 t5.Start(2); 46 47 Thread t6 = new Thread(() => { test2(2); }); 48 t5.Start(); 49 50 Thread t7 = new Thread((o => { test2(o); })); 51 t7.Start(3); 52 53 Thread t8 = new Thread(new ParameterizedThreadStart(test2));//参数类型必须object 且只有一个参数 54 t8.Start(2); 55 56 Test4 test = new Test4(); 57 test.a = 4; 58 Thread t9 = new Thread(test.test4); 59 t9.Start(); 60 61 ThreadPool.QueueUserWorkItem(o => { test1(); }); 62 Parallel.Invoke 63 ( 64 () => { test1(); } 65 ); 66 67 var action = new Action[] 68 { 69 ()=>test1(), 70 }; 71 Parallel.Invoke(action); 72 73 Task.Factory.StartNew(() => { }); 74 75 76 77 TaskFactory taskFactory = new TaskFactory(); 78 List<Task> taskList = new List<Task>(); 79 80 Task any = taskFactory.ContinueWhenAny(taskList.ToArray(), t => 81 { 82 83 //t.AsyncState 84 85 Console.WriteLine("这里是ContinueWhenAny {0}", Thread.CurrentThread.ManagedThreadId); 86 87 }); 88 89 90 91 Task all = taskFactory.ContinueWhenAll(taskList.ToArray(), tList => 92 { 93 94 Console.WriteLine("这里是ContinueWhenAll {0}", Thread.CurrentThread.ManagedThreadId); 95 96 }); 97 98 99 100 101 102 Task.WaitAny(taskList.ToArray());//执行的线程等待某一个task的完成 103 104 Console.WriteLine("after WaitAny{0}", Thread.CurrentThread.ManagedThreadId); 105 106 Task.WaitAll(taskList.ToArray());//执行的线程等待全部的task的完成 107 108 Console.WriteLine("after WaitAll{0}", Thread.CurrentThread.ManagedThreadId); 109 } 110 111 112 113 private void test1() 114 { 115 Console.WriteLine("test1" + Thread.CurrentThread.ManagedThreadId); 116 } 117 118 private void test2(object a) 119 { 120 Console.WriteLine("test2" + Thread.CurrentThread.ManagedThreadId); 121 122 } 123 124 private int test3(int a) 125 { 126 Console.WriteLine("test3" + Thread.CurrentThread.ManagedThreadId); 127 return 3; 128 } 129 } 130 131 public class Test4 132 { 133 public int a { get; set; } 134 135 public void test4() 136 { 137 Console.WriteLine("test" + a + Thread.CurrentThread.ManagedThreadId); 138 } 139 } 140 }