Thread.Start(),ThreadPool.QueueUserWorkItem都是在实现多线程并行编程时常用的方法。两种方式有何异同点,而又该如何取舍?
写一个Demo,分别用两种方式实现。观察各自的现象。
一个WorkMan class,其内的method doSomething()是每次异步线程调用的方法。该方法只是随机的让线程休眠一段时间。
1 public void doSomething() 2 { 3 OnBegin(new EventArgs()); 4 5 // someone does something here 6 var r = new Random(); 7 int sleepTime = r.Next(3000, 180000); 8 Thread.Sleep(900000); 9 10 OnCompleted(new EventArgs()); 11 }