我有一個字符串列表,其中包含約20000個字符串,每個字符長度爲1000個字符。我想使用多個後臺工作人員將相同位置的相同字符串的反轉版本替換爲所有這些字符串。C#多個後臺工作者訪問對象
繼承人我在做什麼至今:
設置背景工人(8因爲計算機有8個內核)
for (int j = 0; j < 8; j++)
{
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += DoWork;
worker.RunWorkerCompleted += WorkComplete;
worker.RunWorkerAsync();
}
我遇到的問題是,我不知道該怎麼放入doWork函數。
如若DoWork的功能不斷循環是這樣的:
private void DoWork(object sender, DoWorkEventArgs e)
{
while(list.count > 0)
{
reverse and add to list
}
}
還是應該的doWork功能只做倒車,然後通過反向串到WorkComplete功能?
private void DoWork(object sender, DoWorkEventArgs e)
{
reverse string
r.result = reversed string
}
作爲背景工作者的替代方案,您是否看過「Task Parallel Library」? http://msdn.microsoft.com/en-us/library/dd460717.aspx – 2013-05-07 10:10:19
你想如何跟蹤哪些列表項已被其他backgroundworker實例處理? – JeffRSon 2013-05-07 10:11:03
這不是真正的背景工作者(BGW)設計的目的。您通常擁有一個BGW,並且不使用共享數據(除了進度和完成事件之外)。如果你想同時處理多個數據,我建議使用TPL並啓動一個任務。 – 2013-05-07 13:21:10