/// <summary> /// Initializes a new instance of the <see cref="EventWaitHandleLocker"/> class using a /// co-initialized instance of the <see cref="EventWaitHandle"/> class used as the /// wait handle, specifying whether the wait handle is initially signaled if created /// as a result of this call, whether it resets automatically or manually, the name /// of a system synchronization event, and a Boolean variable whose value after the /// call indicates whether the named system event was created. /// </summary> /// <param name="initialState">Specify <c>true</c> to set the initial state to signaled /// if the named event is created as a result of this call; <c>false</c> to set it to /// nonsignaled.</param> /// <param name="mode">One of the <see cref="EventResetMode"/> values /// that determines whether the event resets automatically or manually.</param> /// <param name="name">The name of a system-wide synchronization event.</param> /// <returns></returns> public static EventWaitHandleLocker MakeWithEventHandle(bool initialState, EventResetMode mode, string name) { var eventWaitHandle = new EventWaitHandle(initialState, mode, name); var instance = new EventWaitHandleLocker(eventWaitHandle, mode == EventResetMode.AutoReset); return(instance); }
/// <summary> /// Initializes a new instance of the <see cref="EventWaitHandleLocker"/> class using a /// co-initialized instance of the <see cref="EventWaitHandle"/> class used as the /// wait handle, specifying whether the wait handle is initially signaled if created /// as a result of this call, whether it resets automatically or manually, the name /// of a system synchronization event, and a Boolean variable whose value after the /// call indicates whether the named system event was created. /// </summary> /// <param name="initialState">Specify <c>true</c> to set the initial state to signaled /// if the named event is created as a result of this call; <c>false</c> to set it to /// nonsignaled.</param> /// <param name="mode">One of the <see cref="EventResetMode"/> values /// that determines whether the event resets automatically or manually.</param> /// <param name="name">The name of a system-wide synchronization event.</param> /// <param name="createdNew">When this method returns, contains true if a local event /// was created (that is, if name is null or an empty string) or if the specified named /// system event was created; false if the specified named system event already existed. /// This parameter is passed uninitialized.</param> /// <returns></returns> public static EventWaitHandleLocker MakeWithEventHandle(bool initialState, EventResetMode mode, string name, out bool createdNew, TimeSpan timeout) { if (timeout < TimeSpan.Zero) { throw new ArgumentOutOfRangeException("timeout", timeout, "Timeout is a negative number other than -1 milliseconds, which represents an infinite time-out.-or-timeout is greater than System.Int32.MaxValue."); } var eventWaitHandle = new EventWaitHandle(initialState, mode, name, out createdNew); var instance = new EventWaitHandleLocker(eventWaitHandle, timeout, mode == EventResetMode.AutoReset); return(instance); }