public void GenerateWordCloudAsync(Action<WordCloudResult> resultCallback, Action<int> progressCallback) { BackgroundWorker worker = new BackgroundWorker(); worker.WorkerReportsProgress = true; FileBasedProject currentProject = Project; worker.DoWork += (sender, e) => { WordCloudCache cache = new WordCloudCache(); IBlacklist blacklist = DefaultBlacklists.GetDefaultBlacklist(currentProject.GetProjectInfo().SourceLanguage.CultureInfo.TwoLetterISOLanguageName); //new NullBlacklist(); //ComponentFactory.CreateBlacklist(checkBoxExcludeEnglishCommonWords.Checked); IBlacklist customBlacklist = new NullBlacklist(); // CommonBlacklist.CreateFromTextFile(s_BlacklistTxtFileName); IProgressIndicator progress = new ProgressIndicator(); //ComponentFactory.CreateProgressBar(inputType, progressBar); ProjectTextExtractor extractor = new ProjectTextExtractor(currentProject); extractor.Progress += (s, p) => { worker.ReportProgress(p.PercentComplete); }; IEnumerable<string> terms = extractor.ExtractWords(); //ComponentFactory.CreateExtractor(inputType, textBox.Text, progress); IWordStemmer stemmer = new NullStemmer(); //ComponentFactory.CreateWordStemmer(checkBoxGroupSameStemWords.Checked); IEnumerable<IWord> rawWords = terms .Filter(blacklist) .Filter(customBlacklist) .CountOccurences(); List<IWord> words = rawWords .GroupByStem(stemmer) .SortByOccurences() .Cast<IWord>().ToList(); cache.Save("sourcecloud", currentProject, words); e.Result = words; if (Project != null && currentProject.GetProjectInfo().Id == Project.GetProjectInfo().Id) { Words = words; } }; worker.RunWorkerCompleted += (sender, e) => { if (Project != null && currentProject.GetProjectInfo().Id == Project.GetProjectInfo().Id) { WordCloudResult result = new WordCloudResult(); if (e.Error != null) { result.Exception = e.Error; } else { result.WeightedWords = (IEnumerable<IWord>)e.Result; } resultCallback(result); } }; worker.ProgressChanged += (sender, e) => { progressCallback(e.ProgressPercentage); }; worker.RunWorkerAsync(); }
public void GenerateWordCloudAsync(Action <WordCloudResult> resultCallback, Action <int> progressCallback) { BackgroundWorker worker = new BackgroundWorker(); worker.WorkerReportsProgress = true; FileBasedProject currentProject = Project; worker.DoWork += (sender, e) => { WordCloudCache cache = new WordCloudCache(); IBlacklist blacklist = DefaultBlacklists.GetDefaultBlacklist(currentProject.GetProjectInfo().SourceLanguage.CultureInfo.TwoLetterISOLanguageName); //new NullBlacklist(); //ComponentFactory.CreateBlacklist(checkBoxExcludeEnglishCommonWords.Checked); IBlacklist customBlacklist = new NullBlacklist(); // CommonBlacklist.CreateFromTextFile(s_BlacklistTxtFileName); IProgressIndicator progress = new ProgressIndicator(); //ComponentFactory.CreateProgressBar(inputType, progressBar); ProjectTextExtractor extractor = new ProjectTextExtractor(currentProject); extractor.Progress += (s, p) => { worker.ReportProgress(p.PercentComplete); }; IEnumerable <string> terms = extractor.ExtractWords(); //ComponentFactory.CreateExtractor(inputType, textBox.Text, progress); IWordStemmer stemmer = new NullStemmer(); //ComponentFactory.CreateWordStemmer(checkBoxGroupSameStemWords.Checked); IEnumerable <IWord> rawWords = terms .Filter(blacklist) .Filter(customBlacklist) .CountOccurences(); List <IWord> words = rawWords .GroupByStem(stemmer) .SortByOccurences() .Cast <IWord>().ToList(); cache.Save("sourcecloud", currentProject, words); e.Result = words; if (Project != null && currentProject.GetProjectInfo().Id == Project.GetProjectInfo().Id) { Words = words; } }; worker.RunWorkerCompleted += (sender, e) => { if (Project != null && currentProject.GetProjectInfo().Id == Project.GetProjectInfo().Id) { WordCloudResult result = new WordCloudResult(); if (e.Error != null) { result.Exception = e.Error; } else { result.WeightedWords = (IEnumerable <IWord>)e.Result; } resultCallback(result); } }; worker.ProgressChanged += (sender, e) => { progressCallback(e.ProgressPercentage); }; worker.RunWorkerAsync(); }