private void SearchInputView_SearchRequested(object sender, SearchRequestEventArgs e) { _searchResults.Clear(); // Start up enough threads to fetch the search results for (var i = 0; i < _searchProviders.Count(); i++) { var searchProvider = _searchProviders[i]; ThreadPool.QueueUserWorkItem( delegate { // Perform the search var results = searchProvider.Search(e.SearchText); // Add the results to the results list Dispatcher.Invoke( DispatcherPriority.Normal, new Action( delegate { foreach (var result in results) { _searchResults.Add(result); } })); } ); } }
private void SearchInput_SearchRequested(object sender, SearchRequestEventArgs e) { View.ClearResults(); // Start up enough threads to fetch the search results for (var i = 0; i < _searchProviders.Count(); i++) { var searchProvider = _searchProviders[i]; ThreadPool.QueueUserWorkItem( delegate { // Perform the search var results = searchProvider.Search(e.SearchText); // Add the results to the results list _dispatcher.Dispatch( delegate { foreach (var result in results) { View.AddResult(result); } }); } ); } }
private void GoButton_Click(object sender, RoutedEventArgs e) { var searchInformation = new SearchRequestEventArgs(); searchInformation.SearchText = _searchTextBox.Text; // Raise the search event if (SearchRequested != null) { SearchRequested(this, searchInformation); } }