System.Threading.ReaderWriterLock.GetOrCreateWriterEvent C# (CSharp) Method

GetOrCreateWriterEvent() private method

Failed to allocate the event object Failed to create the system event due to some system error
private GetOrCreateWriterEvent ( ) : AutoResetEvent
return AutoResetEvent
        private AutoResetEvent GetOrCreateWriterEvent()
        {
            AutoResetEvent currentEvent = _writerEvent;
            if (currentEvent != null)
            {
                return currentEvent;
            }

            currentEvent = new AutoResetEvent(false);
            AutoResetEvent previousEvent = Interlocked.CompareExchange(ref _writerEvent, currentEvent, null);
            if (previousEvent == null)
            {
                return currentEvent;
            }

            currentEvent.Dispose();
            return previousEvent;
        }