Finished adding find tag by name
diff --git a/src/ProtoBench/Program.cs b/src/ProtoBench/Program.cs
index 36f7850..2be2bf4 100644
--- a/src/ProtoBench/Program.cs
+++ b/src/ProtoBench/Program.cs
@@ -58,6 +58,7 @@
 

         private static BenchmarkTest RunBenchmark;

 

+        [STAThread]

         public static int Main(string[] args)

         {

             List<string> temp = new List<string>(args);

@@ -160,58 +161,47 @@
             long totalCount = 0;

             double best = double.MinValue, worst = double.MaxValue;

 

-            ThreadStart threadProc = 

-                delegate()

-                    {

-                        action();

-                        // Run it progressively more times until we've got a reasonable sample

+            action();

+            // Run it progressively more times until we've got a reasonable sample

 

-                        int iterations = 100;

-                        elapsed = TimeAction(action, iterations);

-                        while (elapsed.TotalMilliseconds < 1000)

-                        {

-                            elapsed += TimeAction(action, iterations);

-                            iterations *= 2;

-                        }

+            int iterations = 100;

+            elapsed = TimeAction(action, iterations);

+            while (elapsed.TotalMilliseconds < 1000)

+            {

+                elapsed += TimeAction(action, iterations);

+                iterations *= 2;

+            }

 

-                        TimeSpan target = TimeSpan.FromSeconds(1);

+            TimeSpan target = TimeSpan.FromSeconds(1);

 

-                        elapsed = TimeAction(action, iterations);

-                        iterations = (int)((target.Ticks * iterations) / (double)elapsed.Ticks);

-                        elapsed = TimeAction(action, iterations);

-                        iterations = (int)((target.Ticks * iterations) / (double)elapsed.Ticks);

-                        elapsed = TimeAction(action, iterations);

-                        iterations = (int)((target.Ticks * iterations) / (double)elapsed.Ticks);

+            elapsed = TimeAction(action, iterations);

+            iterations = (int)((target.Ticks * iterations) / (double)elapsed.Ticks);

+            elapsed = TimeAction(action, iterations);

+            iterations = (int)((target.Ticks * iterations) / (double)elapsed.Ticks);

+            elapsed = TimeAction(action, iterations);

+            iterations = (int)((target.Ticks * iterations) / (double)elapsed.Ticks);

 

-                        double first = (iterations * dataSize) / (elapsed.TotalSeconds * 1024 * 1024);

-                        if (Verbose) Console.WriteLine("Round ---: Count = {1,6}, Bps = {2,8:f3}", 0, iterations, first);

-                        elapsed = TimeSpan.Zero;

-                        int max = FastTest ? 10 : 30;

+            double first = (iterations * dataSize) / (elapsed.TotalSeconds * 1024 * 1024);

+            if (Verbose) Console.WriteLine("Round ---: Count = {1,6}, Bps = {2,8:f3}", 0, iterations, first);

+            elapsed = TimeSpan.Zero;

+            int max = FastTest ? 10 : 30;

 

-                        while (runs < max)

-                        {

-                            TimeSpan cycle = TimeAction(action, iterations);

-                            // Accumulate and scale for next cycle.

-                            

-                            double bps = (iterations * dataSize) / (cycle.TotalSeconds * 1024 * 1024);

-                            if (Verbose) Console.WriteLine("Round {0,3}: Count = {1,6}, Bps = {2,8:f3}", runs, iterations, bps);

+            while (runs < max)

+            {

+                TimeSpan cycle = TimeAction(action, iterations);

+                // Accumulate and scale for next cycle.

+                

+                double bps = (iterations * dataSize) / (cycle.TotalSeconds * 1024 * 1024);

+                if (Verbose) Console.WriteLine("Round {0,3}: Count = {1,6}, Bps = {2,8:f3}", runs, iterations, bps);

 

-                            best = Math.Max(best, bps);

-                            worst = Math.Min(worst, bps);

+                best = Math.Max(best, bps);

+                worst = Math.Min(worst, bps);

 

-                            runs++;

-                            elapsed += cycle;

-                            totalCount += iterations;

-                            iterations = (int) ((target.Ticks*totalCount)/(double) elapsed.Ticks);

-                        }

-                    };

-

-            Thread work = new Thread(threadProc);

-            work.Name = "Worker";

-            work.Priority = ThreadPriority.Highest;

-            work.SetApartmentState(ApartmentState.STA);

-            work.Start();

-            work.Join();

+                runs++;

+                elapsed += cycle;

+                totalCount += iterations;

+                iterations = (int) ((target.Ticks*totalCount)/(double) elapsed.Ticks);

+            }

 

             Console.WriteLine("{0}: averages {1} per {2:f3}s for {3} runs; avg: {4:f3}mbps; best: {5:f3}mbps; worst: {6:f3}mbps",

                               name, totalCount / runs, elapsed.TotalSeconds / runs, runs,