public object Create(Type t, string name) { if (t.IsAssignableFrom(typeof(Window))) { if (_window == null) { MainWindowParameters param = new MainWindowParameters(); if (param.Load(name)) { Window instance = new Window(param); _window = instance; } } return(_window); } if (t.IsAssignableFrom(typeof(ITabUIWPF))) { if (name.Contains("EvaluationTab")) { EvaluationTabUIWPFParameters param = new EvaluationTabUIWPFParameters(); if (param.Load(name)) { EvaluationTabUIWPF instance = new EvaluationTabUIWPF(param); return(instance); } } if (name.Contains("EditorTab")) { EditorTabUIWPFParameters param = new EditorTabUIWPFParameters(); if (param.Load(name)) { EditorTabUIWPF instance = new EditorTabUIWPF(param); return(instance); } } } if (t.IsAssignableFrom(typeof(IUserControlUIWPF))) { if (name.Contains("DataCollector")) { DataCollectorUIWPFParameters param = new DataCollectorUIWPFParameters(); if (param.Load(name)) { DataCollectorUIWPF instance = new DataCollectorUIWPF(param); return(instance); } } if (name.Contains("ResultGrid")) { ResultGridUIWPFParameters param = new ResultGridUIWPFParameters(); if (param.Load(name)) { ResultGridUIWPF instance = new ResultGridUIWPF(param); return(instance); } } if (name.Contains("ResultHandling")) { return(null); } } return(null); }
public void Run() { try { bool successfulLoading = PluginLoader.ConfigManager.Load(this, nameof(MeasurementEvaluator)); if (!successfulLoading) { SendToErrorLogAndConsole($"Loading of {nameof(MeasurementEvaluator)} was not successful in the {nameof(PluginLoader)}."); } if (_createDummyObjects) { IDummyObjectCreator creator = PluginLoader.CreateInstance <IDummyObjectCreator>("DummyObjectCreator"); creator.Create(PluginLoader.SpecificationFolder, PluginLoader.ReferenceFolder, PluginLoader.MeasurementDataFolder); _logger.Info("**********************************************************************************************************************************"); _logger.Info("DummyObject Creator started. Folders:"); _logger.Info($"Specification Folder: {PluginLoader.SpecificationFolder}"); _logger.Info($"Reference Folder: {PluginLoader.ReferenceFolder}"); _logger.Info($"Meaurement Folder: {PluginLoader.MeasurementDataFolder}"); _logger.Info("**********************************************************************************************************************************"); return; } // Start UI: Thread appThread = new Thread(() => { _blCreatedEvent.WaitOne(); IWindowUIWPF window = PluginLoader.CreateInstance <IWindowUIWPF>(_mainWindowName); Window mainWindow = (Window)window; mainWindow.Closed += MainWindow_OnClosed; _application = new Application { MainWindow = mainWindow }; mainWindow.Show(); _uiCreatedEvent.Set(); _blInitCompletedEvent.WaitOne(); if (!window.InitializationCompleted()) { _logger.Error("InitializationCompleted event failed."); return; } _application.DispatcherUnhandledException += _application_DispatcherUnhandledException; _application.Run(mainWindow); }); Debug.Assert(appThread != null); appThread.Name = "WPF_Thread"; appThread.SetApartmentState(ApartmentState.STA); appThread.IsBackground = true; appThread.Start(); // create evaluator Evaluator = PluginLoader.CreateInstance <IEvaluation>(_evaluatorName); _blCreatedEvent.Set(); _uiCreatedEvent.WaitOne(); if (!Evaluator.Initiailze()) { SendToErrorLogAndConsole($"{nameof(Evaluator)} could not been initialized."); } _blInitCompletedEvent.Set(); _uiFinishedEvent.WaitOne(); SendToInfoLogAndConsole($"{Assembly.GetExecutingAssembly().GetName().Name} was shut down."); Thread.Sleep(200); } catch (Exception ex) { SendToErrorLogAndConsole($"Exception occured: {ex}"); } }