private async void DoAnalyze() { Debug.Assert(TargetPath != null); // set the view title ViewTitle = "Analyzing " + TargetPath + "..."; try { // start the analyzer DirectoryAnalyzer analyzer = new DirectoryAnalyzer(); var results = await Task.Run(() => analyzer.Analyze(TargetPath, new Progress<int>(ReportProgress), m_cancellationToken.Token)); // at this point, we close ourselves and open the resuls view var resultsVm = new ResultsVm(results, TargetPath + " results"); // add the results Vm to our application resources in order to pass it to the // ResultsView. // yes, I know, this is terrible design. But for the time being, I // don't have time to learn ModernUI well enough to understand how to do this // correctly. Application.Current.Resources.Add("ResultsVm", resultsVm); Close(); } catch (OperationCanceledException) { Application.Current.Shutdown(); } }
public void TestAnalyze() { string testPath = @"C:\temp\test"; DirectoryAnalyzer analyzer = new DirectoryAnalyzer(); CancellationTokenSource ctSource = new CancellationTokenSource(); IList< DirectoryAnalyzer.DirectoryEntry> results = analyzer.Analyze(testPath, new Progress<int>(), ctSource.Token); Assert.AreEqual(results.Count, 3); Assert.AreEqual(results[0].Name.ToLower(), @"subdir1"); Assert.AreEqual(results[1].Name.ToLower(), @"subdir3"); Assert.AreEqual(results[2].Name.ToLower(), @"subdir2"); }