public void StartAll() { //ToList cast is a precaution for a situation where the list of machines changes //during start up procedure. It might happen on rare occasions. E.g. when a script loads them, and user //hits the pause button. //Otherwise it would crash. ExternalsManager.Start(); foreach (var machine in Machines.ToList()) { machine.Start(); } }