Replace locking on 'this'.

This commit is contained in:
Joe4evr
2016-08-29 16:17:52 +02:00
parent 9c3b6b37ab
commit bd8a601e17
3 changed files with 12 additions and 9 deletions

View File

@@ -7,6 +7,7 @@ namespace Discord.Commands
internal class CommandMap
{
static readonly char[] _whitespaceChars = new char[] { ' ', '\r', '\n' };
private readonly object _lockObj = new object();
private readonly ConcurrentDictionary<string, CommandMapNode> _nodes;
@@ -27,7 +28,7 @@ namespace Discord.Commands
else
name = text.Substring(0, nextSpace);
lock (this)
lock (_lockObj)
{
var nextNode = _nodes.GetOrAdd(name, x => new CommandMapNode(x));
nextNode.AddCommand(nextSpace == -1 ? "" : text, nextSpace + 1, command);
@@ -46,7 +47,7 @@ namespace Discord.Commands
else
name = text.Substring(0, nextSpace);
lock (this)
lock (_lockObj)
{
CommandMapNode nextNode;
if (_nodes.TryGetValue(name, out nextNode))
@@ -69,7 +70,7 @@ namespace Discord.Commands
else
name = text.Substring(0, nextSpace);
lock (this)
lock (_lockObj)
{
CommandMapNode nextNode;
if (_nodes.TryGetValue(name, out nextNode))

View File

@@ -8,6 +8,7 @@ namespace Discord.Commands
{
private readonly ConcurrentDictionary<string, CommandMapNode> _nodes;
private readonly string _name;
private readonly object _lockObj = new object();
private ImmutableArray<Command> _commands;
public bool IsEmpty => _commands.Length == 0 && _nodes.Count == 0;
@@ -24,7 +25,7 @@ namespace Discord.Commands
int nextSpace = text.IndexOf(' ', index);
string name;
lock (this)
lock (_lockObj)
{
if (text == "")
_commands = _commands.Add(command);
@@ -45,7 +46,7 @@ namespace Discord.Commands
int nextSpace = text.IndexOf(' ', index);
string name;
lock (this)
lock (_lockObj)
{
if (text == "")
_commands = _commands.Remove(command);