Несколько фоновых рабочих + C#

Быстрый вопрос - возможно ли одновременное выполнение двух фоновых рабочих процессов? Кажется, я помню, как пробовал это один раз и получил сообщение об ошибке, а также, кажется, читал, что у вас может быть только один... Я не могу найти другой поток, в котором явно говорится о наличии более одного..

Любые мысли очень ценятся!

Ваше здоровье


person keynesiancross    schedule 27.01.2011    source источник


Ответы (1)


У вас может быть сколько угодно фоновых рабочих процессов, работающих одновременно. Пример:

var worker1 = new BackgroundWorker { WorkerReportsProgress = true };
var worker2 = new BackgroundWorker { WorkerReportsProgress = true };
DoWorkEventHandler doWork = (sender, e) =>
{
    for (int i = 0; i < 10; i++)
    {
        var progress = (int)((i + 1) * 100.0 / 10);
        var worker = (BackgroundWorker)sender;
        worker.ReportProgress(progress);
        Thread.Sleep(500);
    }
};
worker1.DoWork += doWork;
worker2.DoWork += doWork;
worker1.ProgressChanged += (sender, e) =>
{
    label1.Text = e.ProgressPercentage.ToString();
};
worker2.ProgressChanged += (sender, e) =>
{
    label2.Text = e.ProgressPercentage.ToString();
};

worker1.RunWorkerAsync();
Thread.Sleep(1000);
worker2.RunWorkerAsync();
person Darin Dimitrov    schedule 27.01.2011
comment
Почему бы не создать отдельные делегаты doWork для worker1 и worker2? - person CACuzcatlan; 12.02.2011
comment
Для примера не надо было. - person MadBoy; 28.02.2012
comment
Спасибо за пример в виде картинки - person Kay Lee; 16.09.2016