1: class Program 2: { 3: static void Main(string[] args) 4: { 5: 6: string inputText = GetUserChoice(); 7: 8: while (!"4".Equals(inputText)) 9: { 10: ThreadTester tester = GreateThreadTesterByInputText(inputText); 11: tester.Start(); 12: 13: while (true) 14: { 15: Console.WriteLine(GetStatusOfThreadTester(tester)); 16: if (!tester.IsTesterRunning()) 17: { 18: break; 19: } 20: Thread.Sleep(100); 21: } 22: 23: inputText = GetUserChoice(); 24: } 25: 26: Console.Write("Click enter to exit..."); 27: } 28: 29: private static string GetStatusOfThreadTester(ThreadTester tester) 30: { 31: return string.Format("[耗时{0}ms] counter = {1}, {2}", 32: tester.GetElapsedMillisecondsOfIncreaseCounter(), tester.GetCounter(), 33: tester.IsTesterRunning() ? "running" : "stopped"); 34: } 35: 36: private static ThreadTester GreateThreadTesterByInputText(string inputText) 37: { 38: switch (inputText) 39: { 40: case "1": 41: return new SingleThreadTester(); 42: case "2": 43: return new TwoThreadSwitchTester(); 44: default: 45: return new MultiThreadTester(100); 46: } 47: } 48: 49: private static string GetUserChoice() 50: { 51: Console.WriteLine(@"==Please select the option in the following list:== 52: 1. SingleThreadTester 53: 2. TwoThreadSwitchTester 54: 3. MultiThreadTester 55: 4. Exit"); 56: 57: string inputText = Console.ReadLine(); 58: 59: return inputText; 60: } 61: } |