private void updateView(TestRunMessage message)
        {
            _syncContext.Post((s) =>
                {
                    lock (_padLock)
                    {
                        if (_newRunInitialized == true)
                        {
                            treeViewLastRun.Nodes.Clear();
                            _testCount = 0;
                        }

                        message.Results.All
                            .Select(x => new CacheTestMessage(message.Results.Assembly, x))
                            .GroupBy(x => getFixture(x)).ToList()
                            .ForEach(x =>
                                {
                                    var node = treeViewLastRun.Nodes.Add(string.Format("{0} ({1}) - {2} ms", x.Key, x.Count(), x.Sum(y => y.Test.TimeSpent.TotalMilliseconds)));
                                    x.ToList()
                                        .ForEach(y =>
                                            {
                                                var child = node.Nodes.Add(string.Format("{0} ({1}) - {2} ms", getTestName(y.Test.DisplayName), y.Test.Runner, y.Test.TimeSpent.TotalMilliseconds));
                                                child.ImageIndex = getImageIndex(y.Test.Status);
                                                child.SelectedImageIndex = child.ImageIndex;
                                                child.Tag = y;
                                            });
                                    node.ImageIndex = x.Max(y => getImageIndex(y.Test.Status));
                                    node.SelectedImageIndex = node.ImageIndex;
                                    if (radioButtonExpanded.Checked)
                                        node.ExpandAll();
                                    _testCount += x.Count();
                                });
                        labelTestCount.Text = _testCount.ToString();
                        _newRunInitialized = false;
                    }
                }, null);
        }
 private void displayTestRunMessage(TestRunMessage message)
 {
     lock (_outputLock)
     {
         writeToOutput(message.Results.Assembly);
         var status = string.Format("{0} tests, {1} failed, {2} ignored", message.Results.All.Count(), message.Results.Failed.Count(), message.Results.Ignored.Count());
         writeToOutput(status);
         foreach (var test in message.Results.Passed)
             writeToOutput(string.Format("({0}) {1} {2}", test.Runner, test.DisplayName, test.Status));
         foreach (var test in message.Results.Ignored)
             writeToOutput(string.Format("({0}) {1} {2}", test.Runner, test.DisplayName, test.Status));
         foreach (var test in message.Results.Failed)
             writeToOutput(string.Format("({0}) {1} {2}", test.Runner, test.DisplayName, test.Status));
         if (message.Results.All.Count() > 10)
             writeToOutput(status);
         writeToOutput("");
     }
 }