void BetterSampleFound(BetterFoundInfo info)
        {
            IDictionary<IColumnSpec, string> messages = new Dictionary<IColumnSpec, string>();
            foreach (var columnSpec in columnSpecs)
                messages[columnSpec] = columnSpec.GetColumnString(infos, info);
            var algorithmIndex = algorithms.IndexOf(info.Algorithm);

            mainControl.Invoke(new Action(() =>
            {
                if (useFullInfo)
                {
                    ConsoleTextBox.AppendText(Environment.NewLine + String.Format("Better sample found for {0}! Layout is:", algorithmIndex)
                        + Environment.NewLine + MainControl.PrintLayoutWithScore(info.Current, info.CurrentScore));
                    ConsoleTextBox.AppendText(messages.Select(kv => kv.Key.Caption - DocumentUtil.Colon - kv.Value).Seperated("; ").ToString() + Environment.NewLine);
                }
                else
                    ConsoleTextBox.AppendText(messages.Seperated("; ").ToString() + Environment.NewLine);
            }));
        }
 public string GetColumnString(IDictionary<KeyboardEPAlgorithm, BetterFoundInfo> infos, BetterFoundInfo info)
 {
     var timeDifference = (info.CurrentTime - startingTime).TotalMilliseconds;
     return timeDifference.ToString();
 }