private void PresentSummary(TreeViewItem item) { this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() => { m_textbox2.Text = ""; var testcase = item.Tag as TestcaseView; if (testcase == null) // present summary { ClearStats(); m_summary_label.Text = "Summary for " + item.Header.ToString(); StringBuilder s = new StringBuilder("\n"); var stat_pos = s.Length; foreach (var i in item.IterateDown()) { var treeitem = i as TreeViewItem; if (treeitem.Tag is TestcaseView) { s.AppendLine(StatusMessage(treeitem.Tag as TestcaseView)); UpdateStats(treeitem.Tag as TestcaseView); } UpdateItem(treeitem); } var total = (m_ok_count + m_failed_count + m_not_run_count); s.Insert(stat_pos, " " + m_failed_count + " failed | " + m_ok_count + " passed | " + m_not_run_count + " not run | " + total + " total tests\n\n"); m_textbox1.Text = s.ToString(); m_progressbar.Maximum = (double)total; m_progressbar.Value = (double)(m_failed_count + m_ok_count); return; } m_textbox1.Text = StatusMessage(testcase); string backtrace = testcase.Exception.PrettyPrint(); m_textbox2.Text = backtrace; UpdateItem(item); m_progressbar.Value = 0; Console.WriteLine(backtrace); })); }