Remove excessive shortcut key matching in ToolStrip
[mono.git] / mcs / class / System.ComponentModel.Composition / src / ComponentModel / Microsoft / Internal / Lock.cs
1 // -----------------------------------------------------------------------\r
2 // Copyright (c) Microsoft Corporation.  All rights reserved.\r
3 // -----------------------------------------------------------------------\r
4 using System;\r
5 using System.Collections.Generic;\r
6 using System.Linq;\r
7 using System.Text;\r
8 using System.Threading;\r
9 \r
10 namespace Microsoft.Internal\r
11 {\r
12     internal sealed class Lock : IDisposable\r
13     {\r
14 #if (!SILVERLIGHT)\r
15         private ReaderWriterLockSlim _thisLock = new ReaderWriterLockSlim(LockRecursionPolicy.NoRecursion);\r
16         private int _isDisposed = 0;\r
17         public void EnterReadLock()\r
18         {\r
19             this._thisLock.EnterReadLock();\r
20         }\r
21 \r
22         public void EnterWriteLock()\r
23         {\r
24             this._thisLock.EnterWriteLock();\r
25         }\r
26 \r
27         public void ExitReadLock()\r
28         {\r
29             this._thisLock.ExitReadLock();\r
30         }\r
31 \r
32         public void ExitWriteLock()\r
33         {\r
34             this._thisLock.ExitWriteLock();\r
35         }\r
36 \r
37         public void Dispose()\r
38         {\r
39             if (Interlocked.CompareExchange(ref this._isDisposed, 1, 0) == 0)\r
40             {\r
41                 this._thisLock.Dispose();\r
42             }\r
43         }\r
44 \r
45 #else\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
49 \r
50         public Lock()\r
51         {\r
52         }\r
53 \r
54         public void EnterReadLock()\r
55         {\r
56             Monitor.Enter(this._thisLock);\r
57         }\r
58 \r
59         public void EnterWriteLock()\r
60         {\r
61             Monitor.Enter(this._thisLock);\r
62         }\r
63 \r
64         public void ExitReadLock()\r
65         {\r
66             Monitor.Exit(this._thisLock);\r
67         }\r
68 \r
69         public void ExitWriteLock()\r
70         {\r
71             Monitor.Exit(this._thisLock);\r
72         }\r
73 \r
74         public void Dispose()\r
75         {\r
76         }\r
77 #endif\r
78     }\r
79 }\r