Beispiel #1
0
        internal bool TryEnter()
        {
            InstanceLockGuard.EnforceGuard(this);

            bool lockHeld = false;
            bool success  = false;

            try
            {
                Monitor.TryEnter(this, ref lockHeld);

                if (lockHeld)
                {
                    HeldLocks.Add(this);
                    success = true;
                }
            }
            finally
            {
                if (lockHeld && !success)
                {
                    Monitor.Exit(this);
                }
            }
            return(success);
        }
Beispiel #2
0
        internal bool TryEnter()
        {
            InstanceLockGuard.EnforceGuard(this);
            bool lockTaken = false;
            bool flag2     = false;

            try
            {
                Monitor.TryEnter(this, ref lockTaken);
                if (lockTaken)
                {
                    HeldLocks.Add(this);
                    flag2 = true;
                }
            }
            finally
            {
                if (lockTaken && !flag2)
                {
                    Monitor.Exit(this);
                }
            }
            return(flag2);
        }