Program.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. using System;
  2. using System.Threading;
  3. namespace MultiConsole.Test
  4. {
  5. internal static class Program
  6. {
  7. private static void Main(string[] args)
  8. {
  9. //TestGetFromCurrentProcess();
  10. //TestCreateNewConsone();
  11. TestMultiConsole();
  12. }
  13. private static void TestMultiConsole()
  14. {
  15. Console.Title = "Multi console host";
  16. var rnd = new Random();
  17. var threads = new Thread[5];
  18. for (var i = 0; i < threads.Length; i++)
  19. {
  20. var localVarIndex = i;
  21. threads[localVarIndex] = new Thread(() =>
  22. {
  23. try
  24. {
  25. Console.WriteLine("Creating Console {0}...", localVarIndex);
  26. var con = ConsoleFactory.Create(string.Format("Sub Console {0}", localVarIndex));
  27. Console.WriteLine("Sub Console {0} Created.", localVarIndex);
  28. con.ForegroundColor = (ConsoleColor)rnd.Next(7,16);
  29. con.BackgroundColor = (ConsoleColor) rnd.Next(0, 7);
  30. int l1, l2;
  31. con.SetCursorPosition(l1 = rnd.Next(0,5), rnd.Next(0,5));
  32. Console.WriteLine("Sub Console {0} say hello...", localVarIndex);
  33. do
  34. {
  35. con.SetCursorPosition(l2 = rnd.Next(0,5), rnd.Next(0,5));
  36. } while (l1 == l2);
  37. con.WriteLine("Hello!");
  38. Console.WriteLine("Sub Console {0} said hello.", localVarIndex);
  39. Console.WriteLine("Sub Console {0} waiting input...", localVarIndex);
  40. con.SetCursorPosition(rnd.Next(0, 10), rnd.Next(0, 10));
  41. con.Write("Input something:");
  42. var input = con.ReadLine();
  43. Console.WriteLine("Sub Console {0} got input: {1}", localVarIndex, input);
  44. Console.WriteLine("Sub Console {0} shutting down...", localVarIndex);
  45. ConsoleFactory.CloseConsole(con);
  46. Console.WriteLine("Sub Console {0} Finished.", localVarIndex);
  47. }
  48. catch (Exception ex)
  49. {
  50. Console.WriteLine("Sub Console {0} Dropped -- {1}", localVarIndex, ex);
  51. }
  52. })
  53. {
  54. Name = string.Format("Sub Console {0} Thread", i),
  55. };
  56. }
  57. foreach (var thread in threads)
  58. {
  59. thread.Start();
  60. }
  61. foreach (var thread in threads)
  62. {
  63. thread.Join();
  64. }
  65. Console.WriteLine();
  66. Console.Write("Finished. press ENTER to exit.");
  67. Console.ReadLine();
  68. }
  69. private static void TestCreateNewConsone()
  70. {
  71. // ReSharper disable once InconsistentNaming
  72. var Console = ConsoleFactory.Create("The new console");
  73. Console.Write("OK, type some input,and ENTER:");
  74. var x = Console.ReadLine();
  75. Console.WriteLine("echo your input:{0}", x);
  76. Console.Write("Finished.");
  77. ConsoleFactory.CloseConsole(Console);
  78. }
  79. private static void TestGetFromCurrentProcess()
  80. {
  81. // ReSharper disable once InconsistentNaming
  82. var Console = ConsoleFactory.GetFromCurrentProcess();
  83. Console.Title = "GetFromCurrentProcess";
  84. Console.Write("OK, type some input,and ENTER:");
  85. var x = Console.ReadLine();
  86. Console.WriteLine("echo your input:{0}", x);
  87. Console.Write("Finished.");
  88. ConsoleFactory.CloseConsole(Console);
  89. }
  90. }
  91. }