+ public static bool SignalAndWait (WaitHandle toSignal,
+ WaitHandle toWaitOn,
+ int millisecondsTimeout,
+ bool exitContext)
+ {
+ if (toSignal == null)
+ throw new ArgumentNullException ("toSignal");
+ if (toWaitOn == null)
+ throw new ArgumentNullException ("toWaitOn");
+
+ if (millisecondsTimeout < -1)
+ throw new ArgumentOutOfRangeException ("millisecondsTimeout");
+
+ return SignalAndWait_Internal (toSignal.Handle, toWaitOn.Handle, millisecondsTimeout, exitContext);
+ }
+
+ public static bool SignalAndWait (WaitHandle toSignal,
+ WaitHandle toWaitOn,
+ TimeSpan timeout,
+ bool exitContext)
+ {
+ double ms = timeout.TotalMilliseconds;
+ if (ms > Int32.MaxValue)
+ throw new ArgumentOutOfRangeException ("timeout");
+
+ return SignalAndWait (toSignal, toWaitOn, Convert.ToInt32 (ms), false);
+ }
+