EventWaitHandle.TryOpenExisting Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Открывает указанное именованное событие синхронизации, если оно уже существует, и возвращает значение, указывающее, успешно ли выполнена операция.
Перегрузки
TryOpenExisting(String, EventWaitHandle) |
Открывает указанное именованное событие синхронизации, если оно уже существует, и возвращает значение, указывающее, успешно ли выполнена операция. |
TryOpenExisting(String, EventWaitHandleRights, EventWaitHandle) |
Открывает заданное именованное событие синхронизации, если оно уже существует, с требуемыми правами доступа и возвращает значение, указывающее, успешно ли выполнена операция. |
TryOpenExisting(String, EventWaitHandle)
- Исходный код:
- EventWaitHandle.cs
- Исходный код:
- EventWaitHandle.cs
- Исходный код:
- EventWaitHandle.cs
Открывает указанное именованное событие синхронизации, если оно уже существует, и возвращает значение, указывающее, успешно ли выполнена операция.
public:
static bool TryOpenExisting(System::String ^ name, [Runtime::InteropServices::Out] System::Threading::EventWaitHandle ^ % result);
[System.Security.SecurityCritical]
public static bool TryOpenExisting (string name, out System.Threading.EventWaitHandle result);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static bool TryOpenExisting (string name, out System.Threading.EventWaitHandle? result);
public static bool TryOpenExisting (string name, out System.Threading.EventWaitHandle result);
public static bool TryOpenExisting (string name, out System.Threading.EventWaitHandle? result);
[<System.Security.SecurityCritical>]
static member TryOpenExisting : string * EventWaitHandle -> bool
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member TryOpenExisting : string * EventWaitHandle -> bool
static member TryOpenExisting : string * EventWaitHandle -> bool
Public Shared Function TryOpenExisting (name As String, ByRef result As EventWaitHandle) As Boolean
Параметры
- name
- String
Имя объекта синхронизации, который должен быть открыт для других процессов и использоваться совместно с этими процессами. Имя указано с учетом регистра. Символ обратной косой черты (\) зарезервирован и может использоваться только для указания пространства имен. Дополнительные сведения о пространствах имен см. в разделе примечаний. В зависимости от операционной системы могут быть дополнительные ограничения на имя. Например, в операционных системах под управлением Unix имя после исключения пространства имен должно быть допустимым именем файла.
- result
- EventWaitHandle
При возврате этого метода содержит объект EventWaitHandle, представляющий именованное событие синхронизации, если вызов завершился успешно, или значение null
, если вызов завершился неудачно. Этот параметр обрабатывается как неинициализированный.
Возвращаемое значение
Значение true
, если именованное событие синхронизации открылось успешно. В противном случае — значение false
. В некоторых случаях false
может возвращаться для недопустимых имен.
- Атрибуты
Исключения
Параметр name
равен пустой строке.
- или -
Только в .NET Framework. name
превышает значение MAX_PATH (260 символов).
name
имеет значение null
.
name
недопустим. Это исключение может возникнуть по разным причинам, включая некоторые ограничения, установленные операционной системой (например, в отношении использования неизвестных префиксов или недопустимых символов). Обратите внимание, что в имени и общих префиксах Global\" и "Local\" учитывается регистр. Для некоторых недопустимых имен метод может возвращать false
.
- или -
Произошла другая ошибка. Дополнительные сведения можно получить с помощью свойства HResult
.
Слишком длинное значение name
. Ограничения длины могут зависеть от операционной системы или конфигурации.
Именованное событие уже существует, но пользователь не имеет требуемых прав для безопасного доступа.
Комментарии
Для name
указания пространства имен может быть задан Global\
префикс или Local\
. При указании Global
пространства имен объект синхронизации может использоваться совместно с любыми процессами в системе. При указании Local
пространства имен, которое также используется по умолчанию, если пространство имен не указано, объект синхронизации может быть совместно использоваться процессами в одном сеансе. В Windows сеанс является сеансом входа, а службы обычно выполняются в другом неинтерактивном сеансе. В операционных системах, подобных Unix, каждая оболочка имеет собственный сеанс. Объекты локальной синхронизации сеанса могут быть подходящими для синхронизации между процессами с отношением "родитель-потомок", где все они выполняются в одном сеансе. Дополнительные сведения об именах объектов синхронизации в Windows см. в разделе Имена объектов.
Если объект синхронизации запрошенного типа существует в пространстве имен, открывается существующий объект синхронизации. Если объект синхронизации не существует в пространстве имен или объект синхронизации другого типа существует в пространстве имен, false
возвращается .
Чтобы создать системное событие, если оно еще не существует, используйте один из EventWaitHandle конструкторов с параметром name
.
Если вы не уверены, существует ли именованное событие синхронизации, используйте эту перегрузку OpenExisting(String) метода вместо перегрузки метода, которая создает исключение, если событие синхронизации не существует.
Эта перегрузка метода эквивалентна вызову перегрузки TryOpenExisting(String, EventWaitHandleRights, EventWaitHandle) метода с указанием EventWaitHandleRights.Synchronize и EventWaitHandleRights.Modify правами, объединенными с помощью побитовой операции OR. Указание флага EventWaitHandleRights.Synchronize позволяет потоку ожидать именованного системного события, а указание EventWaitHandleRights.Modify флага позволяет потоку вызывать Set методы и Reset .
Несколько вызовов этого метода, использующих одно и то же значение для , name
не обязательно возвращают один и тот же EventWaitHandle объект, даже если возвращаемые объекты представляют одно и то же именованное системное событие.
Применяется к
TryOpenExisting(String, EventWaitHandleRights, EventWaitHandle)
Открывает заданное именованное событие синхронизации, если оно уже существует, с требуемыми правами доступа и возвращает значение, указывающее, успешно ли выполнена операция.
public:
static bool TryOpenExisting(System::String ^ name, System::Security::AccessControl::EventWaitHandleRights rights, [Runtime::InteropServices::Out] System::Threading::EventWaitHandle ^ % result);
[System.Security.SecurityCritical]
public static bool TryOpenExisting (string name, System.Security.AccessControl.EventWaitHandleRights rights, out System.Threading.EventWaitHandle result);
[<System.Security.SecurityCritical>]
static member TryOpenExisting : string * System.Security.AccessControl.EventWaitHandleRights * EventWaitHandle -> bool
Public Shared Function TryOpenExisting (name As String, rights As EventWaitHandleRights, ByRef result As EventWaitHandle) As Boolean
Параметры
- name
- String
Имя объекта синхронизации, который должен быть открыт для других процессов и использоваться совместно с этими процессами. Имя указано с учетом регистра. Символ обратной косой черты (\) зарезервирован и может использоваться только для указания пространства имен. Дополнительные сведения о пространствах имен см. в разделе примечаний. В зависимости от операционной системы могут быть дополнительные ограничения на имя. Например, в операционных системах под управлением Unix имя после исключения пространства имен должно быть допустимым именем файла.
- rights
- EventWaitHandleRights
Битовая комбинация значений перечисления, которые определяют желаемые права доступа.
- result
- EventWaitHandle
При возврате этого метода содержит объект EventWaitHandle, представляющий именованное событие синхронизации, если вызов завершился успешно, или значение null
, если вызов завершился неудачно. Этот параметр обрабатывается как неинициализированный.
Возвращаемое значение
Значение true
, если именованное событие синхронизации открылось успешно. В противном случае — значение false
. В некоторых случаях false
может возвращаться для недопустимых имен.
- Атрибуты
Исключения
Параметр name
равен пустой строке.
- или -
Только в .NET Framework. name
превышает значение MAX_PATH (260 символов).
name
имеет значение null
.
name
недопустим. Это исключение может возникнуть по разным причинам, включая некоторые ограничения, установленные операционной системой (например, в отношении использования неизвестных префиксов или недопустимых символов). Обратите внимание, что в имени и общих префиксах Global\" и "Local\" учитывается регистр. Для некоторых недопустимых имен метод может возвращать false
.
- или -
Произошла другая ошибка. Дополнительные сведения можно получить с помощью свойства HResult
.
Слишком длинное значение name
. Ограничения длины могут зависеть от операционной системы или конфигурации.
Именованное событие уже существует, но пользователь не имеет требуемых прав для безопасного доступа.
Комментарии
Для name
указания пространства имен может быть задан Global\
префикс или Local\
. При указании Global
пространства имен объект синхронизации может использоваться совместно с любыми процессами в системе. При указании Local
пространства имен, которое также используется по умолчанию, если пространство имен не указано, объект синхронизации может быть совместно использоваться процессами в одном сеансе. В Windows сеанс является сеансом входа, а службы обычно выполняются в другом неинтерактивном сеансе. В операционных системах, подобных Unix, каждая оболочка имеет собственный сеанс. Объекты локальной синхронизации сеанса могут быть подходящими для синхронизации между процессами с отношением "родитель-потомок", где все они выполняются в одном сеансе. Дополнительные сведения об именах объектов синхронизации в Windows см. в разделе Имена объектов.
Если объект синхронизации запрошенного типа существует в пространстве имен, открывается существующий объект синхронизации. Если объект синхронизации не существует в пространстве имен или объект синхронизации другого типа существует в пространстве имен, false
возвращается .
Чтобы создать системное событие, если оно еще не существует, используйте один из EventWaitHandle конструкторов с параметром name
.
Если вы не уверены, существует ли именованное событие синхронизации, используйте эту перегрузку OpenExisting(String, EventWaitHandleRights) метода вместо перегрузки метода, которая создает исключение, если событие синхронизации не существует.
Параметр rights
должен включать EventWaitHandleRights.Synchronize флаг , чтобы разрешить потокам ожидать события, и EventWaitHandleRights.Modify флаг , чтобы разрешить потокам вызывать Set методы и Reset .
Несколько вызовов этого метода, использующих одно и то же значение для , name
не обязательно возвращают один и тот же EventWaitHandle объект, даже если возвращаемые объекты представляют одно и то же именованное системное событие.