Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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}");
            }
        }