7
我想在一個while循環中使用TPL,並且我需要將任務的一些值傳遞給循環。舉例來說,在此顯示與遞增(其中任務創建要求的行之後必然)指數爲例:循環內啓動任務:如何傳遞循環內可更改的值?
int index = 0;
Task[] tasks;
while(/*condition*/)
{
tasks[index] = Task.Factory.StartNew(() => DoJob(index));
index++;
}
但是,當然,這是行不通的,因爲該指數值可以是在任務開始之前遞增。一個可能的解決方案可能是傳遞一個WaitHandle,它在增加索引之前等待並且必須通過DoJob方法發送信號,但是在我看來這並不是一個很好的解決方案。任何其他想法?
重構可能並不總是這樣直截了當,但應該始終可能 - 不要在嵌套循環中停頓:] – 2013-08-18 00:43:22