private void FilterRoms(Filter filter = null) { if (updating) { return; } FilteredRoms.Clear(); //DateTime begin = DateTime.Now; if (filter == null) { filter = new Filter(); filter.text = textBoxFilter.Text; filter.platform = comboBoxPlatform.Text; filter.label = comboBoxLabels.Text; filter.genre = comboBoxGenre.Text; filter.publisher = comboBoxPublisher.Text; filter.developer = comboBoxDeveloper.Text; filter.year = comboBoxYearReleased.Text; filter.status = comboBoxStatus.Text; filter.favorite = checkBoxFavorite.Checked; filter.text = filter.text.ToLower(); filter.textType = comboBoxFilter.Text; filter.arcade = checkBoxArcade.Checked; filter.console = checkBoxConsole.Checked; filter.handheld = checkBoxHandheld.Checked; filter.cd = checkBoxCD.Checked; filter.romfile = dataGridView.SelectedRows.Count == 0 ? "" : ((Rom)dataGridView.SelectedRows[0].Tag).Name; filter.romplatform = dataGridView.SelectedRows.Count == 0 ? "" : ((Rom)dataGridView.SelectedRows[0].Tag).Platform.Name; } dataGridView.SuspendLayout(); Thread.BeginCriticalRegion(); FilteredRoms = FilterFunctions.FilterRoms(filter); Thread.EndCriticalRegion(); dataGridView.ResumeLayout(); //DateTime end = DateTime.Now; AddRomsToGrid(FilteredRoms); //FormCustomMessage.Show((end - begin).ToString()); }