public static List <ParallelSearchRes> ArrayThreadTask(object paramObj) { ParallelSearchThreadParam param = (ParallelSearchThreadParam)paramObj; string wordUpper = param.wordPattern.Trim().ToUpper(); List <ParallelSearchRes> Result = new List <ParallelSearchRes>(); foreach (string str in param.tempList) { int dist = ab5library.EditDistanse.Distance(str.ToUpper(), wordUpper); if (dist <= param.maxDist) { ParallelSearchRes temp = new ParallelSearchRes() { word = str, dist = dist, ThreadNum = param.ThreadNum }; Result.Add(temp); } } return(Result); }
public static List <ParallelSearchRes> ArrayThreadTask(object paramObj) // выполняется в параллельном потоке для поиска строк { ParallelSearchThreadParam param = (ParallelSearchThreadParam)paramObj; string wordUpper = param.wordPattern.Trim().ToUpper(); // слово для поиска в верхнем регистре List <ParallelSearchRes> Result = new List <ParallelSearchRes>(); // результаты поиска в одном потоке foreach (string str in param.tempList) // перебор всех слов во временном списке данного потока { int dist = ab5library.EditDistanse.Distance(str.ToUpper(), wordUpper); // вычисление расстояния Дамерау-Левенштейна if (dist <= param.maxDist) // условие добавления слова в результат { ParallelSearchRes temp = new ParallelSearchRes() { word = str, dist = dist, ThreadNum = param.ThreadNum }; Result.Add(temp); } } return(Result); }