private void EmergencyEvacuation() { Debug.Assert(null != RunningJobs); if (RunningJobs.Count == 0) { return; } if (!declaredStateOfEmergency) { Tracer.Error("Director unavailable. Worker Manager starts emergency evacuation of workers."); declaredStateOfEmergency = true; } List <RunningJob> updatedListOfRunningJobs = RunningJobs.Where(runningJob => StopWorkersForJob(runningJob)).ToList(); RunningJobs = updatedListOfRunningJobs; if (RunningJobs.Count > 0) { return; // Wait for jobs to stop } Tracer.Warning("Director unavailable. All workers successfully evacuated from the factory."); // All workers evacuated }