System.Threading.Tests.MonitorTests.Exit_WhenHeldBySomeoneElse_ThrowsSynchronizationLockException C# (CSharp) Method

Exit_WhenHeldBySomeoneElse_ThrowsSynchronizationLockException() private method

        public static void Exit_WhenHeldBySomeoneElse_ThrowsSynchronizationLockException()
        {
            var obj = new object();
            var b = new Barrier(2);

            Task t = Task.Run(() =>
            {
                lock (obj)
                {
                    b.SignalAndWait();
                    b.SignalAndWait();
                }
            });

            b.SignalAndWait();
            Assert.Throws<SynchronizationLockException>(() => Monitor.Exit(obj));
            b.SignalAndWait();

            t.Wait();
        }