private void updateTimer_Tick(object sender, EventArgs e) { if (Monitor.TryEnter(this.updateableControls)) { try { foreach (var control in this.updateableControls) { control.Update(); } } finally { Monitor.Exit(this.updateableControls); } } }