2012-01-05 39 views
0

我有這樣的代碼:.NET 4.0:System.Threading.Tasks:我可以執行一系列任務而不需要線程化嗎?

Dim Tasks As New List(Of Task) 

Tasks.Add(Task.Factory.StartNew(Sub() 
            'Do whatever 
           End Sub)) 

Tasks.Add(Task.Factory.StartNew(Sub() 
            'Do some stuff here 
           End Sub)) 

Tasks.Add(Task.Factory.StartNew(Sub() 
            'Do more code 
           End Sub)) 

Task.WaitAll(Tasks.ToArray()) 

這是在ASP.NET應用程序正在做的,並導致生產中的問題。我想禁用任務線程,以便所有匿名方法都可以連續執行,但這意味着要重寫代碼以將匿名方法變爲實際方法,然後調用它們。如果有設置會導致任務收集不以這種線程方式運行,那真的會很好。這可能嗎?

+0

出於興趣,這會導致什麼問題? – 2012-01-05 13:46:17

+0

還沒弄明白。這是一個隨機的「線程被中止的例外」。我正在做的是發射一堆打開連接的線程,但它隨機點死亡。 – oscilatingcretin 2012-01-05 14:06:04

+0

聽起來很奇怪。您處理了多少個併發請求?這似乎不太可能,但我想知道ASP.NET是否用完了線程池線程。 – 2012-01-05 14:37:28

回答

0

如果我正確理解你的問題,你想使用任務的RunSynchronously方法。

+0

子WaitAsync(任務爲IEnumerable(OF System.Threading.Tasks.Task)) 每個任務作爲System.Threading.Tasks.Task在任務 任務.RunSynchronously() Next End Sub 當我調用它時,我得到'RunSynchronously的異常可能不會在已經啓動的任務上調用。有任何想法嗎?谷歌對此有極小的支持。 – oscilatingcretin 2012-01-05 14:07:56

+0

標記爲答案,因爲我無法刪除問題。去了另一條路線並放棄了這種方法。 – oscilatingcretin 2012-05-04 17:36:14

+0

我不認爲這應該被認爲是答案,因爲你不能刪除問題。 – 2012-05-04 23:13:56

0

是的,通過提供自定義任務調度程序。我不確定你需要在什麼位置注入它,可能在工廠一級。

相關問題