public void StartProcess(AbstractBackgroundProcess process)
{
lock (activeProcesses)
if (!activeProcesses.Contains(process)) {
activeProcesses.Add(process);
OnStatusChanged(process, process.Status);
process.StatusChanged += statusChangedDelegate;
process.Progress += progressDelegate;
Thread thread = new Thread(new ThreadStart(process.WorkRunner));
thread.Name = process.Name;
thread.IsBackground = true;
threadLookup[process] = thread;
thread.Start();
}
}