In the ConcurrentQeueue<> class, and extra method TryDequeue() is defined. But, as it implements IProducerConsumerCollection<>, it also has a TryTake() method. According to the docs, they both do the same thing:
Tries to remove and return the object at the beginning of the concurrent queue.
For ConcurrentQueue, this operation will attempt to remove the object from the beginning of the ConcurrentQueue.
Why bother with implementing that TryDequeue method?
According to available source code there is no difference as
TryTakeinvokesTryDequeueSouce: https://source.dot.net/#System.Private.CoreLib/ConcurrentQueue.cs,201
TryDequeuefollows expected name conventions associated with queues and is local toConcurrentQueue<>. As well,TryTakefollows naming convention normally associated with producer/consumer pattern.