У меня есть список строк, содержащих около 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
}
В качестве альтернативы фоновому работнику вы рассмотрели «параллельную библиотеку задач»? http://msdn.microsoft.com/en-us/library/dd460717.aspx –
Как вы хотите отслеживать, какие элементы списка были обработаны другими экземплярами backgroundworker? – JeffRSon
Это не совсем то, что делает фоновой рабочий (BGW). Обычно у вас есть одна BGW, и она не использует общие данные (кроме как в ходе и полных событиях). Если вы хотите, чтобы одновременно обрабатывали данные одновременно, я бы предложил использовать TPL и развернуть задачу. –