From a65ba095affcdf592d487e4cd6cf30fb0d8a5371 Mon Sep 17 00:00:00 2001 From: FiniteReality Date: Tue, 17 Jan 2017 20:08:18 +0000 Subject: [PATCH 1/2] Replace ConcurrentBag with HashSet Fixes #487 --- src/Discord.Net.Commands/CommandService.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/Discord.Net.Commands/CommandService.cs b/src/Discord.Net.Commands/CommandService.cs index 0d27bd178..02a398851 100644 --- a/src/Discord.Net.Commands/CommandService.cs +++ b/src/Discord.Net.Commands/CommandService.cs @@ -18,7 +18,7 @@ namespace Discord.Commands private readonly ConcurrentDictionary> _typeReaders; private readonly ConcurrentDictionary _defaultTypeReaders; private readonly ImmutableList> _entityTypeReaders; //TODO: Candidate for C#7 Tuple - private readonly ConcurrentBag _moduleDefs; + private readonly HashSet _moduleDefs; private readonly CommandMap _map; internal readonly bool _caseSensitive; @@ -160,8 +160,7 @@ namespace Discord.Commands } private bool RemoveModuleInternal(ModuleInfo module) { - var defsRemove = module; - if (!_moduleDefs.TryTake(out defsRemove)) + if (!_moduleDefs.Remove(module)) return false; foreach (var cmd in module.Commands) From 0715cb6623feb9540c0ee68f7982e2d4e3ade19b Mon Sep 17 00:00:00 2001 From: FiniteReality Date: Sun, 22 Jan 2017 03:08:52 +0000 Subject: [PATCH 2/2] Actually use HashSet to initialize _moduleDefs --- src/Discord.Net.Commands/CommandService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Discord.Net.Commands/CommandService.cs b/src/Discord.Net.Commands/CommandService.cs index 02a398851..9f6e66c20 100644 --- a/src/Discord.Net.Commands/CommandService.cs +++ b/src/Discord.Net.Commands/CommandService.cs @@ -38,7 +38,7 @@ namespace Discord.Commands _moduleLock = new SemaphoreSlim(1, 1); _typedModuleDefs = new ConcurrentDictionary(); - _moduleDefs = new ConcurrentBag(); + _moduleDefs = new HashSet(); _map = new CommandMap(this); _typeReaders = new ConcurrentDictionary>();