From 1af1850376f793a5d178ad716fffaaa0c89c246b Mon Sep 17 00:00:00 2001 From: "harald.martini@student.tugraz.at" <harald.martini@student.tugraz.at> Date: Wed, 13 Oct 2021 10:04:47 +0200 Subject: [PATCH] Create Kernel in SimulatorFactory only once --- .../Impl/SimulatorFactory/SimulatorFactory.cs | 24 ++++++------------- .../SimulatorFactoryDeclaration.cs | 6 ++--- 2 files changed, 9 insertions(+), 21 deletions(-) diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactory.cs b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactory.cs index 59fb4431bd..c9970582d1 100644 --- a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactory.cs +++ b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactory.cs @@ -61,7 +61,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory public abstract class SimulatorFactory : LoggingObject, ISimulatorFactory { private static int _jobNumberCounter; - + private static IKernel _kernel; //Kernel is only used when the SimulatorFactory is created with the Factory Method. protected Func<ISimulatorFactory> _followingSimulatorFactoryCreator = null; @@ -80,22 +80,12 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory [Obsolete("Creation of new SimulatorFactories should be done with SimulatorFactoryFactory NInject Factory", false)] public static ISimulatorFactory CreateSimulatorFactory(ExecutionMode mode, IInputDataProvider dataProvider, IOutputDataWriter writer, IDeclarationReport declarationReport = null, IVTPReport vtpReport=null, bool validate = true) { - return new StandardKernel(new VectoNinjectModule()).Get<ISimulatorFactoryFactory>().Factory(mode, dataProvider, writer, declarationReport, vtpReport, validate); - //switch (mode) - //{ - // case ExecutionMode.Declaration: - - // return new SimulatorFactoryDeclaration(dataProvider, writer, declarationReport, vtpReport, validate); - // case ExecutionMode.Engineering: - // return new SimulatorFactoryEngineering(dataProvider, writer, validate); - // default: - // throw new VectoException("Unkown factory mode in SimulatorFactory: {0}", mode); - //} - } - [Obsolete("Creation of new SimulatorFactories should be done with SimulatorFactoryFactory NInject Factory", false)] - public static ISimulatorFactory CreateSimulatorFactory(ExecutionMode mode, IInputDataProvider dataProvider, IOutputDataWriter writer) - { - return CreateSimulatorFactory(mode, dataProvider, writer, null, null, true); + lock (_kernel) { + if (_kernel == null) { + _kernel = new StandardKernel(new VectoNinjectModule()); + } + } + return _kernel.Get<ISimulatorFactoryFactory>().Factory(mode, dataProvider, writer, declarationReport, vtpReport, validate); } protected SimulatorFactory(ExecutionMode mode, IOutputDataWriter writer, bool validate = true) diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactoryDeclaration.cs b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactoryDeclaration.cs index 4558d8ffa0..4cdc0bfa28 100644 --- a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactoryDeclaration.cs +++ b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactoryDeclaration.cs @@ -78,9 +78,6 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory DataReader = new DeclarationModeCompletedMultistageBusVectoRunDataFactory( multistageVifInputData.MultistageJobInputData, reportCompleted); - - - } else { @@ -142,7 +139,8 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory #pragma warning disable 618 var factory = CreateSimulatorFactory(_mode, #pragma warning restore 618 - vifInputData, originalReportWriter, + vifInputData, + originalReportWriter, null, vtpReport, Validate); -- GitLab