private async void analyzeToolStripMenuItem_Click(object sender, EventArgs e) { if (isBinarized) { progressBar = new GeneratorProgressBar { Info = "Looking for shapes", }; DisableMenu(); DisablePictureBox(); progressBar.Show(); List <PoreAnalyzeData> newData; newData = await Task.Run(() => _processor.FindShapes(_image.ViewImage)); progressBar.Info = "Analyzing shapes"; var analyzedShapes = await AnalyzeShapesAsync(newData); if (_poresDatabase == null) { _poresDatabase = analyzedShapes; } else { _poresDatabase.AddRange(analyzedShapes); _poresDatabase = _poresDatabase.GroupBy(pd => pd.Id).Select(g => g.First()).ToList(); } progressBar.Dispose(); EnableMenu(); EnablePictureBox(); } else { if (BinarizeFirstDialog() == DialogResult.Yes) { binarizationToolStripMenuItem_Click(sender, e); analyzeToolStripMenuItem_Click(sender, e); } } }