private void DoVisualisation(object sender, DoWorkEventArgs args) { while (true) { TurnsNumber++; Thread.Sleep(30); if (_backgroundWorker.CancellationPending == false) { var newPixels = _geneticManager.NextGeneration(); lock (PixelCollection) { _backgroundWorker.ReportProgress(0, newPixels); } if (newPixels.AreAllPixelsEqual()) { MessageBox.Show(Resources.VisualisationEnded); Pause(); } } else { args.Cancel = true; return; } } }