Поделиться через


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 объект, даже если возвращаемые объекты представляют один и тот же именованный системный мьютекс.

Этот метод не запрашивает владение мьютексом.

Применяется к