Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ LazyCreateEvent()

void System.Threading.ReaderWriterLockSlim.LazyCreateEvent ( [NotNull] ref EventWaitHandle waitEvent,
EnterLockType enterLockType )
inlineprivate

Definition at line 941 of file ReaderWriterLockSlim.cs.

942 {
943 _spinLock.Exit();
944 EventWaitHandle eventWaitHandle = new EventWaitHandle(initialState: false, (enterLockType == EnterLockType.Read) ? EventResetMode.ManualReset : EventResetMode.AutoReset);
945 EnterSpinLockReason reason;
946 switch (enterLockType)
947 {
948 case EnterLockType.Read:
949 case EnterLockType.UpgradeableRead:
950 reason = EnterSpinLockReason.Wait;
951 break;
952 case EnterLockType.Write:
953 reason = (EnterSpinLockReason)10;
954 break;
955 default:
956 reason = (EnterSpinLockReason)11;
957 break;
958 }
959 _spinLock.Enter(reason);
960 if (waitEvent == null)
961 {
962 waitEvent = eventWaitHandle;
963 }
964 else
965 {
966 eventWaitHandle.Dispose();
967 }
968 }

References System.Threading.ReaderWriterLockSlim._spinLock, System.Threading.WaitHandle.Dispose(), System.Threading.ReaderWriterLockSlim.SpinLock.Enter(), and System.Threading.ReaderWriterLockSlim.SpinLock.Exit().

Referenced by System.Threading.ReaderWriterLockSlim.TryEnterReadLockCore(), System.Threading.ReaderWriterLockSlim.TryEnterUpgradeableReadLockCore(), and System.Threading.ReaderWriterLockSlim.TryEnterWriteLockCore().