diff --git a/src/modules/Elsa.Workflows.Core/Services/ActivityRegistry.cs b/src/modules/Elsa.Workflows.Core/Services/ActivityRegistry.cs index 6180f14b0..88c019b03 100644 --- a/src/modules/Elsa.Workflows.Core/Services/ActivityRegistry.cs +++ b/src/modules/Elsa.Workflows.Core/Services/ActivityRegistry.cs @@ -1,3 +1,4 @@ +using System.Collections.Concurrent; using Elsa.Workflows.Contracts; using Elsa.Workflows.Helpers; using Elsa.Workflows.Models; @@ -12,8 +13,8 @@ public class ActivityRegistry : IActivityRegistry private readonly IEnumerable _modifiers; private readonly ILogger _logger; private readonly ISet _manualActivityDescriptors = new HashSet(); - private readonly IDictionary> _providedActivityDescriptors = new Dictionary>(); - private readonly IDictionary<(string Type, int Version), ActivityDescriptor> _activityDescriptors = new Dictionary<(string Type, int Version), ActivityDescriptor>(); + private readonly ConcurrentDictionary> _providedActivityDescriptors = new(); + private readonly ConcurrentDictionary<(string Type, int Version), ActivityDescriptor> _activityDescriptors = new(); /// /// Initializes a new instance of the class. @@ -50,9 +51,9 @@ public class ActivityRegistry : IActivityRegistry var descriptors = ListByProvider(providerType).ToList(); foreach (var descriptor in descriptors) - _activityDescriptors.Remove((descriptor.TypeName, descriptor.Version)); + _activityDescriptors.Remove((descriptor.TypeName, descriptor.Version), out _); - _providedActivityDescriptors.Remove(providerType); + _providedActivityDescriptors.Remove(providerType, out _); } /// @@ -124,7 +125,7 @@ public class ActivityRegistry : IActivityRegistry return descriptors; descriptors = new List(); - _providedActivityDescriptors.Add(provider, descriptors); + _providedActivityDescriptors[provider]= descriptors; return descriptors; }