Bootstrapper.cs 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. using Caliburn.Micro;
  2. using Caliburn.Micro.Core;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Diagnostics;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading;
  9. using System.Threading.Tasks;
  10. using System.Windows;
  11. using Aitex.Core.RT.Event;
  12. using Aitex.Core.RT.Log;
  13. using Aitex.Core.Util;
  14. using Aitex.Core.WCF;
  15. using MECF.Framework.UI.Client.ClientBase;
  16. using SciChart.Charting.Visuals;
  17. using FurnaceGasPanelUI.Config;
  18. namespace FurnaceGasPanelUI.Client
  19. {
  20. public class Bootstrapper : BootstrapperBase
  21. {
  22. //static Mutex mutex;
  23. //bool isNewMutex;
  24. protected override void OnStartup(object sender, StartupEventArgs e)
  25. {
  26. try
  27. {
  28. System.Collections.ArrayList procList = new System.Collections.ArrayList();
  29. bool.TryParse(AppSettingsHelper.GetConfigValue("IsSlave"), out bool isSlave);
  30. if (!isSlave)
  31. {
  32. foreach (System.Diagnostics.Process thisProc in System.Diagnostics.Process.GetProcesses())
  33. {
  34. procList.Add(thisProc.ProcessName);
  35. }
  36. //if (!procList.Contains("ThermalRT"))
  37. //{
  38. // var exeFilePath = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
  39. // if (!Debugger.IsAttached)
  40. // {
  41. // exeFilePath = exeFilePath.Replace("FurnaceGasPanelUI", "ThermalRT");
  42. // System.Diagnostics.Process.Start(exeFilePath);
  43. // Thread.Sleep(50);
  44. // }
  45. //}
  46. if (!EventClient.Instance.ConnectRT())
  47. {
  48. MessageBox.Show("Can not connect with RT, launch RT first", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
  49. Environment.Exit(0);
  50. return;
  51. }
  52. }
  53. }
  54. catch (Exception)
  55. {
  56. MessageBox.Show("Can not connect with RT, launch RT first", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
  57. Environment.Exit(0);
  58. return;
  59. }
  60. Singleton<Aitex.Core.RT.Log.LogManager>.Instance.Initialize();
  61. BaseApp.Instance = new FurnaceGasPanelUI.Client.ClientApp();
  62. DisplayRootViewFor<MainViewModel>();
  63. base.OnStartup(sender, e);
  64. }
  65. protected override void OnExit(object sender, EventArgs e)
  66. {
  67. base.OnExit(sender, e);
  68. Singleton<Aitex.Core.RT.Log.LogManager>.Instance.Terminate();
  69. Application.Current.Shutdown();
  70. }
  71. protected override void OnUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
  72. {
  73. if (e.Exception != null)
  74. {
  75. LOG.Write(e.Exception);
  76. if (e.Exception.InnerException != null)
  77. LOG.Write(e.Exception.InnerException);
  78. }
  79. e.Handled = true;
  80. }
  81. private SimpleContainer container;
  82. public Bootstrapper()
  83. {
  84. SciChartSurface.SetRuntimeLicenseKey("vwAIyu6FysOMMV/v7pag3WEENpK0hDMQx5zbMKYtlb3PMTsV9R+v2toHl/Z2YJ7t/MDVkKCBsZjBxOUs1djpkyLqgCFMlX5DMrKFdP82QRqZRCOht0hQjW5Omy5z9ZRbalxSx4mlgnL/YXWr2JQrD1dWoTeoDP7xm8JB3+KZ4M5pqxeUCib6VvRpfq3O7HVIyFfcDk0JVByjV+vtgGpOo5RP630lKr9VLS3CPk1aUeul4XQAnJX+IafLnsgSKiDWlZMYU9qJehqA1EdwOnEvvOwhcwckJ5/BoeQ0qDvDaYZ1Jfzkcv5sqOYKd749TJ8wsoTDubT/bLv+BwBiXura1mBZlOIE9zB5XwJVedWWzi6dGDG8LRRKh1XjuyD6V92G596xYsb5b8EJJ8AkgsC/R+fLeN/FIZBlq/Vepg+1dwkLlCCtp8nZWBjsRDQWNrG6Vyk5TF2RzI62WrwKfWfNWXtC5wjkJE5IJzUFlj/B/UhCzB8=");
  85. Initialize();
  86. }
  87. protected override void Configure()
  88. {
  89. container = new SimpleContainer();
  90. container.Singleton<IEventAggregator, EventAggregator>();
  91. container.Singleton<IWindowManager, WindowManager>();
  92. //container.Singleton<IPublisher, Publisher>();
  93. container.PerRequest<MainViewModel>();
  94. }
  95. protected override object GetInstance(Type service, string key)
  96. {
  97. return container.GetInstance(service, key);
  98. }
  99. protected override IEnumerable<object> GetAllInstances(Type service)
  100. {
  101. return container.GetAllInstances(service);
  102. }
  103. protected override void BuildUp(object instance)
  104. {
  105. container.BuildUp(instance);
  106. }
  107. }
  108. }