Ejemplo n.º 1
0
        private static bool TimeWordSearch(IDictionarySearch search, string wordToFind, IEnumerable <string> dictionary, out long runTime)
        {
            var timer = new Stopwatch();

            timer.Start();
            var wordExists = search.FindWordInDictionary(wordToFind, dictionary);

            timer.Stop();
            runTime = timer.ElapsedMilliseconds;

            return(wordExists);
        }
        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            string exp = inputBox.Text;                 //Выражение для поиска

            if (string.IsNullOrEmpty(exp))              //Не пустое
            {
                MessageBox.Show("Введите что-нибудь в поле ввода");
                return;
            }

            Search            = new FileDictionarySearch(Path, Checker);    //Создаем поиск в файле с заданными параметрами
            btn.IsEnabled     = false;                                      //Отключаем кнопку поиска
            status.Visibility = Visibility.Hidden;                          //Скрываем статусное сообщение

            IEnumerable <string> result = null;                             //Результаты

            try
            {
                result = Search.Find(exp);                                  //Попытка поиска
            }
            catch (FileNotFoundException)
            {
                MessageBox.Show("Не найден файл. Убедитесь, что вы выбрали существующий");
                btn.IsEnabled = true;
                return;
            }

            int total = await result.CountAsync();                                  //Всего результатов

            string[] output = await result.Take(5000).ToArrayAsync();               //Взять не больше 5000

            outputBox.Text = string.Join(Environment.NewLine, output);              //Положить каждый по одному на строку
            status.Content = $"Показано {output.Length} результатов из {total}";    //Вывести количество найденных и выведенных на экран

            status.Visibility = Visibility.Visible;                                 //Статус видимый
            btn.IsEnabled     = true;                                               //Кнопку снова можно нажать
        }