public static EventWaitHandle OpenExisting(string name, EventWaitHandleRights rights)
{
if (name == null)
{
throw new ArgumentNullException("name");
}
if ((name.Length == 0) ||
(name.Length > 260))
{
throw new ArgumentException("name", Locale.GetText("Invalid length [1-260]."));
}
MonoIOError error;
IntPtr handle = NativeEventCalls.OpenEvent_internal(name, rights, out error);
if (handle == (IntPtr)null)
{
if (error == MonoIOError.ERROR_FILE_NOT_FOUND)
{
throw new WaitHandleCannotBeOpenedException(Locale.GetText("Named Event handle does not exist: ") + name);
}
else if (error == MonoIOError.ERROR_ACCESS_DENIED)
{
throw new UnauthorizedAccessException();
}
else
{
throw new IOException(Locale.GetText("Win32 IO error: ") + error.ToString());
}
}
return(new EventWaitHandle(handle));
}