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