private static void RunReplayManager(ReplayManager replayManager, int nbrRepeats, string outputFile)
        {
            replayManager.Run(nbrRepeats);
            Console.WriteLine("----------");
            for (int i = 0; i < replayManager.RunTimeMillis.Count; i++)
            {
                Console.WriteLine("#" + (i + 1) + ": " + "respond time = " + replayManager.RunTimeMillis[i]
                                  + " average memory = " + replayManager.MemReaders[i].GetAverage());
            }
            StringBuilder sb = new StringBuilder();

            sb.AppendLine("Starting Memory (MB): " +
                          replayManager.StartMemReader.RecordMemoryUsage());
            sb.AppendLine("Run, Reponse Time (ms), Average Memory (MB), Min Memory (MB), Max Memory (MB)");
            for (int i = 0; i < replayManager.RunTimeMillis.Count; i++)
            {
                sb.Append((i + 1));
                sb.Append(",");
                sb.Append(replayManager.RunTimeMillis[i]);
                sb.Append(",");
                sb.Append(replayManager.MemReaders[i].GetAverage());
                sb.Append(",");
                sb.Append(replayManager.MemReaders[i].GetMin());
                sb.Append(",");
                sb.Append(replayManager.MemReaders[i].GetMax());
                sb.AppendLine();
            }
            File.WriteAllText(outputFile, sb.ToString());
            Console.WriteLine("Output saved to " + outputFile);
        }
        static void Main(string[] args)
        {
            //Read command arguments
            ProgramArguments arguments = ProgramArguments.ReadFromFile(args[0]);

            GUIDataMonitor monitor       = new GUIDataMonitor();
            ReplayManager  replayManager = new ReplayManager(arguments, monitor);

            var task = Task.Run(() => RunReplayManager(replayManager, arguments.NbrRepeats, arguments.OutputFile));

            Thread guiThread = new Thread(() => DisplayGUI(monitor));

            guiThread.SetApartmentState(ApartmentState.STA);
            guiThread.Start();

            task.Wait();
            guiThread.Join();

            Console.WriteLine();
            Console.WriteLine("Press any key to exit");
            Console.ReadKey();
        }