1 // -----------------------------------------------------------------------
\r
2 // Copyright (c) Microsoft Corporation. All rights reserved.
\r
3 // -----------------------------------------------------------------------
\r
5 using System.Collections.Generic;
\r
8 using System.Threading;
\r
10 namespace Microsoft.Internal
\r
12 internal sealed class Lock : IDisposable
\r
15 private ReaderWriterLockSlim _thisLock = new ReaderWriterLockSlim(LockRecursionPolicy.NoRecursion);
\r
16 private int _isDisposed = 0;
\r
17 public void EnterReadLock()
\r
19 this._thisLock.EnterReadLock();
\r
22 public void EnterWriteLock()
\r
24 this._thisLock.EnterWriteLock();
\r
27 public void ExitReadLock()
\r
29 this._thisLock.ExitReadLock();
\r
32 public void ExitWriteLock()
\r
34 this._thisLock.ExitWriteLock();
\r
37 public void Dispose()
\r
39 if (Interlocked.CompareExchange(ref this._isDisposed, 1, 0) == 0)
\r
41 this._thisLock.Dispose();
\r
46 // ReaderWriterLockSlim is not yet implemented on SilverLight
\r
47 // Satisfies our requirements until it is implemented
\r
48 object _thisLock = new object();
\r
54 public void EnterReadLock()
\r
56 Monitor.Enter(this._thisLock);
\r
59 public void EnterWriteLock()
\r
61 Monitor.Enter(this._thisLock);
\r
64 public void ExitReadLock()
\r
66 Monitor.Exit(this._thisLock);
\r
69 public void ExitWriteLock()
\r
71 Monitor.Exit(this._thisLock);
\r
74 public void Dispose()
\r