HI все. У меня есть массив объектов BackgroundWorker, работающих с экземплярами класса Worker. Когда я вызываю класс Worker, экземпляр объекта делает это, а затем заканчивается код (цикл завершается). Я могу прослушивать событие RunWorkerCompleted(), но когда он вызывает делегата, который я создал, мне нужно знать, какой из моих объектов Worker только что был завершен.
Я вижу свойство UserState в RunWorkerCompletedEventArgs, которое приходит к моему делегату, но я не знаю, как установить это в моем объекте Worker по мере его завершения.
Любые идеи?
из моего класса WorkManager.cs
public Worker AddWorker()
{
Worker w = new Worker();
_workers.Add(w.WorkerID,w);
BackgroundWorker bg = new BackgroundWorker();
_bgworkers.Add(bg);
bg.DoWork += w.Start;
bg.WorkerReportsProgress = true;
bg.WorkerSupportsCancellation = true;
bg.ProgressChanged += ProcessWorkerMessage;
bg.RunWorkerCompleted += WorkerFinished;
w.WorkManager = this;
w.BackgroundWorker = bg;
bg.RunWorkerAsync(w);
return w;
}
public void WorkerFinished(object sender, RunWorkerCompletedEventArgs e)
{
if (_onManagerEvent != null)
_onManagerEvent(new ManagerEvent { EventDate = DateTime.Now, Message = "Worker ??? successfully ended." });
}
Итак, когда мой объект Worker завершает цикл в методе Start(), что я делаю, чтобы заполнить свойство userState объекта "e" RunWorkerCompleteEventArgs, которое передается моему методу WorkerFinished()?
Спасибо