public static List <ParallelSearchResult> ArrayThreadTask(object paramObj) { ParallelSearchThreadParam param = (ParallelSearchThreadParam)paramObj; //Слово для поиска в верхнем регистре string wordUpper = param.wordPattern.Trim().ToUpper(); //Результаты поиска в одном потоке List <ParallelSearchResult> Result = new List <ParallelSearchResult>(); //Перебор всех слов во временном списке данного потока foreach (string str in param.tempList) { //Вычисление расстояния Дамерау-Левенштейна int dist = Levenstain.Distance(str.ToUpper(), wordUpper); //Если расстояние меньше порогового, то слово добавляется в результат if (dist <= param.maxDist) { ParallelSearchResult temp = new ParallelSearchResult() { word = str, dist = dist, ThreadNum = param.ThreadNum }; Result.Add(temp); } } return(Result); }
private void ButtonFind_Click(object sender, EventArgs e) { int maxDistance; if (!int.TryParse(textBoxLength.Text.Trim(), out maxDistance)) { MessageBox.Show("Неккоректные данные"); } else { var time = new Stopwatch(); time.Start(); foreach (var item in WordList) { if (Levenstain.Distance(item.ToLower(), textBox2.Text.ToLower()) < maxDistance) { listBox.BeginUpdate(); listBox.Items.Add(item); listBox.EndUpdate(); } } time.Stop(); var result = time.Elapsed.TotalMilliseconds; labelFind.Text = result.ToString(); } }
private void ButtonSearch_Click(object sender, EventArgs e) { string word = textBoxSearch.Text.Trim(); if (!string.IsNullOrWhiteSpace(word) && lst.Count > 0) { word = word.ToUpper(); List <string> res = new List <string>(); int maxdst; if (!int.TryParse(this.textBoxDist.Text.Trim(), out maxdst)) { MessageBox.Show("Введены неверные данные."); } else { Stopwatch t = new Stopwatch(); t.Start(); foreach (string wrd in lst) { int dst = Levenstain.Distance(wrd.ToUpper(), word); if (dst <= maxdst) { res.Add(wrd); } } t.Stop(); this.textBoxTimeSearch.Text = t.Elapsed.ToString(); this.listBoxResult.BeginUpdate(); this.listBoxResult.Items.Clear(); foreach (string wrd in res) { this.listBoxResult.Items.Add(wrd); } this.listBoxResult.EndUpdate(); } } else { MessageBox.Show("Необходимо выбрать файл и ввести слово для поиска"); } }