I’m currently doing my synchronization using a locking object to write to a collection like this:
private void WSMessageEnqueue(object sender, MessageClass message)
{
if (isDisconnecting == true) return;
lock (enqueueLockObject)
{
incomingMessageQueue.Enqueue(message);
}
}
Where the enqueueLockObject is a private object in the class. I have several of these as messages are enqueued by different threads for different functional units. In the contention explorer I can see the threads hitting the locks but the locks all have names like Handle18.

Is it possible to name the locks so I can identify them more easily?
There is no named lock available in c#. You could try using named mutex, but it is generally much slower than Monitor.Enter/Monitor.Exit.
Take a look at the link provided by Mark or alternatively you can write you you own class. A basic implementation may look like: