[Timer] Use a WaitHandle instead of Wait/Pulse
[mono.git] / mcs / class / corlib / System.Threading / EventWaitHandle.cs
index d812b3ddd89cadec3e42d28cd916502be7c8ab47..de747e506bb1f1282845340d3e2a655ff9e21061 100644 (file)
@@ -27,8 +27,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
-
 using System.IO;
 using System.Runtime.InteropServices;
 #if !NET_2_1
@@ -44,26 +42,34 @@ namespace System.Threading
                {
                        Handle = handle;
                }
+
+               private bool IsManualReset (EventResetMode mode)
+               {
+                       if ((mode < EventResetMode.AutoReset) || (mode > EventResetMode.ManualReset))
+                               throw new ArgumentException ("mode");
+                       return (mode == EventResetMode.ManualReset);
+               }
                
                public EventWaitHandle (bool initialState, EventResetMode mode)
                {
                        bool created;
-                       
-                       Handle = NativeEventCalls.CreateEvent_internal ((mode == EventResetMode.ManualReset), initialState, null, out created);
+                       bool manual = IsManualReset (mode);
+                       Handle = NativeEventCalls.CreateEvent_internal (manual, initialState, null, out created);
                }
                
                public EventWaitHandle (bool initialState, EventResetMode mode,
                                        string name)
                {
                        bool created;
-                       
-                       Handle = NativeEventCalls.CreateEvent_internal ((mode == EventResetMode.ManualReset), initialState, name, out created);
+                       bool manual = IsManualReset (mode);
+                       Handle = NativeEventCalls.CreateEvent_internal (manual, initialState, name, out created);
                }
                
                public EventWaitHandle (bool initialState, EventResetMode mode,
                                        string name, out bool createdNew)
                {
-                       Handle = NativeEventCalls.CreateEvent_internal ((mode == EventResetMode.ManualReset), initialState, name, out createdNew);
+                       bool manual = IsManualReset (mode);
+                       Handle = NativeEventCalls.CreateEvent_internal (manual, initialState, name, out createdNew);
                }
 #if !NET_2_1
                [MonoTODO ("Implement access control")]
@@ -71,7 +77,8 @@ namespace System.Threading
                                        string name, out bool createdNew,
                                        EventWaitHandleSecurity eventSecurity)
                {
-                       Handle = NativeEventCalls.CreateEvent_internal ((mode == EventResetMode.ManualReset), initialState, name, out createdNew);
+                       bool manual = IsManualReset (mode);
+                       Handle = NativeEventCalls.CreateEvent_internal (manual, initialState, name, out createdNew);
                }
                
                [MonoTODO]
@@ -132,5 +139,3 @@ namespace System.Threading
 #endif
        }
 }
-
-#endif