From dcec2932661702dfa092cdf9f9022d65864d85f1 Mon Sep 17 00:00:00 2001
From: "harald.martini@student.tugraz.at" <harald.martini@student.tugraz.at>
Date: Wed, 13 Oct 2021 10:20:03 +0200
Subject: [PATCH] added kernel lock in SImulatorFactory

---
 .../Simulation/Impl/SimulatorFactory/SimulatorFactory.cs    | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactory.cs b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactory.cs
index c9970582d1..ef74447118 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactory.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactory.cs
@@ -61,6 +61,8 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory
 	public abstract class SimulatorFactory : LoggingObject, ISimulatorFactory
 	{
 		private static int _jobNumberCounter;
+
+		private static object _kernelLock = new object();
 		private static IKernel _kernel; //Kernel is only used when the SimulatorFactory is created with the Factory Method.
 
 		protected Func<ISimulatorFactory> _followingSimulatorFactoryCreator = null;
@@ -80,7 +82,7 @@ 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)
 		{
-			lock (_kernel) {
+			lock (_kernelLock) {
 				if (_kernel == null) {
 					_kernel = new StandardKernel(new VectoNinjectModule());
 				}
@@ -119,7 +121,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory
 
 		public SummaryDataContainer SumData { get; set; }
 
-		public abstract IOutputDataWriter ReportWriter { get; protected set; }
+		public IOutputDataWriter ReportWriter { get; protected set; }
 
 		public int JobNumber { get; set; }
 
-- 
GitLab