protected void ComputeSolutions() { // sanity checks if (cbBoxes.Items.Count == 0 || chklbCases.Items.Count == 0) { return; } // clear existing analyses Analyses.Clear(); int expectedCount = uCtrlNumberPerCase.Value.Activated ? uCtrlNumberPerCase.Value.Value : -1; try { PackableBrick packable = cbBoxes.SelectedType as PackableBrick; ThreadRunning = true; ProgressWindow progress = new ProgressWindow(); System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(BuildAnalyses), progress); progress.ShowDialog(); // fill grid FillGrid(); } catch (Exception ex) { _log.Error(ex.Message); } finally { ThreadRunning = false; } }