private async void timerTick() { if (!imageLoaded) { return; } Source.Cancel(); int alive = currentExistence.Phases.First().GetNumberAlive(); LastReport = currentExistence.MakeAnUniversalTimeUntiPass(); int dead = statingPopulationNumber - alive; lblAlvie.Text = alive.ToString(); lblDead.Text = dead.ToString(); universalTimeUnit++; lblUniversalTime.Text = universalTimeUnit.ToString(); lblUTUSecond.Text = String.Format("{0:0.0}", (universalTimeUnit / (DateTime.Now - StartingTime).TotalSeconds)); if (panel1.BackgroundImage == null) { panel1.BackgroundImage = new Bitmap(500, 500); } if (currentExistence != null || currentExistence.Phases != null || currentExistence.Phases.FirstOrDefault() != null) { Source = new CancellationTokenSource(); panel1.BackgroundImage = await drawer.Draw(Source.Token, new List <UniversalObject>(currentExistence.Phases.First().UniversalObjectsInside), cbShowAttacks.Checked, LastReport, (Bitmap)panel1.BackgroundImage); } //panel1.Refresh(); imageLoaded = true; }