2012-08-13 36 views
4

我看到幾個人通話功能使用的語法,如:不同的使用任務並行庫

Parallel.Invoke(() => Method1(yourString1),() => Method2(youString2)); 

很少有人寫這樣的代碼:

Task myFirstTask = Task.Factory.StartNew(() => Method1(5)); 
Task mySecondTask = Task.Factory.StartNew(() => Method2("Hello")); 

所以我的問題是,當一個應該使用Parallel.Invoke()以及何時應創建任務類的實例並調用StartNew()方法。

Parallel.Invoke()看起來很handy.so什麼是使用Task類& StartNew()方法的意義.........把一些光,告訴我不同​​的重要性同一種工作方式的方法意味着用兩種不同的語法調用兩個函數並行。

我從未在之前使用任務並行庫。所以使用兩種方法調用函數可能會有一些隱藏的原因。請詳細指導我。謝謝

回答

6

那麼,Parallel.Invoke將阻塞,直到兩個新的任務已完成。

第二種方法將啓動兩個新任務,但不等待它們完成。您可以手動等待它們,或者在C#5中,新的異步/等待功能將幫助您異步「等待」。

這真的取決於你想要做什麼。如果你你的線程阻塞,直到所有的任務完成,Parallel.Invoke是方便。

+1

該死的你寫得這麼快。 – h1ghfive 2012-08-13 09:09:41