示例#1
0
        public static AnagramDictionary WithFile(this AnagramDictionary anagramDictionary, string path)
        {
            ValidatePath(path);
            var taskFactory = new TaskFactory(TaskCreationOptions.LongRunning, TaskContinuationOptions.None);
            var readTask    = taskFactory.StartNew(() =>
                                                   Parallel.ForEach(File.ReadLines(path, Encoding.UTF8).AsParallel(),
                                                                    anagramDictionary.AddToWordList));

            Task.WaitAll(readTask);
            anagramDictionary.CompleteWordList();

            var fillTask = taskFactory.StartNew(() =>
                                                Parallel.ForEach(anagramDictionary.GetWordList(), anagramDictionary.AddToDictionary));

            Task.WaitAll(fillTask);

            return(anagramDictionary);
        }