public void StartTerminationDetection() { DetectingTermination = true; Task.Run(() => { while (DetectingTermination) { Thread.Sleep(100); lock (AllNodesLock) { if (AllNodes.All(n => n.IsValid() && DateTime.Now.Subtract(n.LastReceivedMessageTime) > TimeSpan.FromMilliseconds(400))) { OnTerminated(); DetectingTermination = false; } } } }); }