Привет всем.У меня есть массив объектов 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 объекта RunWorkerCompleteEventArgs"e", которое передается моему методу WorkerFinished ()?
Спасибо