Fix bugs in sizing TableLayoutPanel (Xamarin bug 18638)
[mono.git] / mcs / class / System.ComponentModel.Composition / src / ComponentModel / Microsoft / Internal / Lock.Reader.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 struct ReadLock : IDisposable\r
13     {\r
14         private readonly Lock _lock;\r
15         private int _isDisposed;\r
16 \r
17         public ReadLock(Lock @lock)\r
18         {\r
19             this._isDisposed = 0;\r
20             this._lock = @lock;\r
21             this._lock.EnterReadLock();\r
22         }\r
23 \r
24         public void Dispose()\r
25         {\r
26             if (Interlocked.CompareExchange(ref this._isDisposed, 1, 0) == 0)\r
27             {\r
28                 this._lock.ExitReadLock();\r
29             }\r
30         }\r
31     }\r
32 }\r