我嘗試在有史以來第一次嵌入多線程,並遇到一些意想不到的問題,希望你能提供幫助。.NET並行處理ArrayList
下面的代碼片段,讓我的煩惱:
ArrayList recordsCollection = new ArrayList();
ArrayList batchCollection = null;
int idx = 0;
while(true)
{
// Some code to generate and assign new batchCollection here
recordsCollection.Add(batchCollection);
ThreadPool.QueueUserWorkItem(delegate
{
ProcessCollection(recordsCollection.GetRange(idx, 1));
});
Interlocked.Increment(ref idx);
}
private void ProcessCollection(ArrayList collection)
{
// Do some work on collection here
}
過程一旦收集方法被調用,我試圖通過收集我得到「的基礎列表的範圍無效」進行迭代。
在此先感謝!
更新:夥計們,謝謝你們每一個人。通過應用您的建議,我能夠極大地簡化並使其發揮作用。
它不會解決你的問題,但你可能要考慮使用'列表'而不是'ArrayList'。 –
2010-07-22 19:23:00
謝謝Mark,我肯定會這麼做的,難怪我沒有找到ArrayList的泛型版本。 :) – 2010-07-22 19:26:08