private void Search()
{
// Validate the search controls.
Result<bool> result = ValidateControls();
if (result.ErrorMessage.Length > 0)
{
MessageBox.Show(result.ErrorMessage);
return;
}
SearchCriteria searchCriteria = GetSearchCriteria();
// Replace the search controls with the progress control(s)
ShowSearchProgressGrid();
StatusTextBox.Text = "Loading results. Please be patient.";
Progress.Value = 0;
ResultGrid.Items.Clear();
// Stop any previous search if it's still working
// (in practice this should not be necessary)
if (_searchManager != null && _searchManager.IsBusy)
{
string msg = "Please wait one moment before searching. ";
MessageBox.Show(msg);
_searchManager.CancelAsync();
}
// Coordinates the actual scraping/parsing/validation/results:
_searchManager = new SearchManager(searchCriteria,
Constants.MAX_THREADS);
_searchManager.ProgressChanged += ScraperProgressChanged;
_searchManager.RunWorkerCompleted += ScrapeComplete;
_searchManager.RunWorkerAsync();
}