diff --git a/Pilz.Net/Api/ApiServer.cs b/Pilz.Net/Api/ApiServer.cs index 71f15a2..263188d 100644 --- a/Pilz.Net/Api/ApiServer.cs +++ b/Pilz.Net/Api/ApiServer.cs @@ -76,14 +76,19 @@ public class ApiServer : IApiServer { var curThread = ThreadedDataManager ? Thread.CurrentThread : null; var threadHolder = new ThreadHolder(curThread); + IDataManager manager; - if (managers.TryGetValue(threadHolder, out var mgr)) - return mgr; + lock (managers) + { + if (managers.TryGetValue(threadHolder, out var mgr)) + return mgr; - if (OnGetNewDataManager?.Invoke(this, EventArgs.Empty) is not IDataManager manager) - throw new MissingDataManagerException(); - - managers.Add(threadHolder, manager); + if (OnGetNewDataManager?.Invoke(this, EventArgs.Empty) is not IDataManager managerr) + throw new MissingDataManagerException(); + manager = managerr; + + managers.Add(threadHolder, manager); + } return manager; }