Mutex.TryOpenExisting Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Открывает указанный именованный мьютекс, если он уже существует, и возвращает значение, указывающее, успешно ли выполнена операция.
Перегрузки
TryOpenExisting(String, Mutex) |
Открывает указанный именованный мьютекс, если он уже существует, и возвращает значение, указывающее, успешно ли выполнена операция. |
TryOpenExisting(String, MutexRights, Mutex) |
Открывает указанный именованный мьютекс, если он уже существует, с требуемыми правами доступа, и возвращает значение, указывающее, успешно ли выполнена операция. |
TryOpenExisting(String, Mutex)
- Исходный код:
- Mutex.cs
- Исходный код:
- Mutex.cs
- Исходный код:
- Mutex.cs
Открывает указанный именованный мьютекс, если он уже существует, и возвращает значение, указывающее, успешно ли выполнена операция.
public:
static bool TryOpenExisting(System::String ^ name, [Runtime::InteropServices::Out] System::Threading::Mutex ^ % result);
[System.Security.SecurityCritical]
public static bool TryOpenExisting (string name, out System.Threading.Mutex result);
public static bool TryOpenExisting (string name, out System.Threading.Mutex? result);
public static bool TryOpenExisting (string name, out System.Threading.Mutex result);
[<System.Security.SecurityCritical>]
static member TryOpenExisting : string * Mutex -> bool
static member TryOpenExisting : string * Mutex -> bool
Public Shared Function TryOpenExisting (name As String, ByRef result As Mutex) As Boolean
Параметры
- name
- String
Имя объекта синхронизации, который должен использоваться совместно с другими процессами. Имя указано с учетом регистра. Символ обратной косой черты (\) зарезервирован и может использоваться только для указания пространства имен. Дополнительные сведения о пространствах имен см. в разделе примечаний. В зависимости от операционной системы могут быть дополнительные ограничения на имя. Например, в операционных системах под управлением Unix имя после исключения пространства имен должно быть допустимым именем файла.
- result
- Mutex
Когда выполнение этого метода завершается, содержит объект Mutex, представляющий именованный мьютекс, если вызов завершился успешно, или значение 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
возвращается .
Чтобы создать системный мьютекс, если он еще не существует, используйте один из Mutex конструкторов с параметром name
.
Если вы не уверены, существует ли именованный мьютекс, используйте эту перегрузку OpenExisting(String) метода вместо перегрузки метода, которая создает исключение, если мьютекс не существует.
Несколько вызовов этого метода, использующих одно и то же значение для , name
не обязательно возвращают один и тот же Mutex объект, даже если возвращаемые объекты представляют один и тот же именованный системный мьютекс.
Эта перегрузка метода эквивалентна вызову перегрузки TryOpenExisting(String, MutexRights, Mutex) метода с указанием MutexRights.Synchronize и MutexRights.Modify правами, объединенными с помощью побитовой операции OR. Указание флага MutexRights.Synchronize позволяет потоку ожидать мьютекса, а указание флага MutexRights.Modify позволяет потоку вызывать ReleaseMutex метод .
Этот метод не запрашивает владение мьютексом.
Применяется к
TryOpenExisting(String, MutexRights, Mutex)
Открывает указанный именованный мьютекс, если он уже существует, с требуемыми правами доступа, и возвращает значение, указывающее, успешно ли выполнена операция.
public:
static bool TryOpenExisting(System::String ^ name, System::Security::AccessControl::MutexRights rights, [Runtime::InteropServices::Out] System::Threading::Mutex ^ % result);
[System.Security.SecurityCritical]
public static bool TryOpenExisting (string name, System.Security.AccessControl.MutexRights rights, out System.Threading.Mutex result);
[<System.Security.SecurityCritical>]
static member TryOpenExisting : string * System.Security.AccessControl.MutexRights * Mutex -> bool
Public Shared Function TryOpenExisting (name As String, rights As MutexRights, ByRef result As Mutex) As Boolean
Параметры
- name
- String
Имя объекта синхронизации, который должен использоваться совместно с другими процессами. Имя указано с учетом регистра. Символ обратной косой черты (\) зарезервирован и может использоваться только для указания пространства имен. Дополнительные сведения о пространствах имен см. в разделе примечаний. В зависимости от операционной системы могут быть дополнительные ограничения на имя. Например, в операционных системах под управлением Unix имя после исключения пространства имен должно быть допустимым именем файла.
- rights
- MutexRights
Битовая комбинация значений перечисления, которые определяют желаемые права доступа.
- result
- Mutex
Когда выполнение этого метода завершается, содержит объект Mutex, представляющий именованный мьютекс, если вызов завершился успешно, или значение 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
возвращается .
Чтобы создать системный мьютекс, если он еще не существует, используйте один из Mutex конструкторов с параметром name
.
Если вы не уверены, существует ли именованный мьютекс, используйте эту перегрузку OpenExisting(String, MutexRights) метода вместо перегрузки метода, которая создает исключение, если мьютекс не существует.
Параметр rights
должен включать MutexRights.Synchronize флаг , чтобы разрешить потокам ждать мьютекса, и MutexRights.Modify флаг , чтобы разрешить потокам ReleaseMutex вызывать метод .
Несколько вызовов этого метода, использующих одно и то же значение для , name
не обязательно возвращают один и тот же Mutex объект, даже если возвращаемые объекты представляют один и тот же именованный системный мьютекс.
Этот метод не запрашивает владение мьютексом.