Mutex.TryOpenExisting Метод

Определение

Открывает указанный именованный мьютекс, если он уже существует, и возвращает значение, указывающее, выполнена ли операция успешно.

Перегрузки

Имя Описание
TryOpenExisting(String, Mutex)

Открывает указанный именованный мьютекс, если он уже существует, и возвращает значение, указывающее, выполнена ли операция успешно.

TryOpenExisting(String, MutexRights, Mutex)

Открывает указанный именованный мьютекс, если он уже существует, при требуемом доступе к безопасности и возвращает значение, указывающее, выполнена ли операция успешно.

TryOpenExisting(String, NamedWaitHandleOptions, Mutex)

Открывает указанный именованный мьютекс, если он уже существует, и возвращает значение, указывающее, выполнена ли операция успешно. Если параметры заданы только для текущего пользователя, элементы управления доступом объекта проверяются для вызывающего пользователя.

TryOpenExisting(String, Mutex)

Исходный код:
Mutex.cs
Исходный код:
Mutex.cs
Исходный код:
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 см. в разделе Object Names.

Если объект синхронизации запрошенного типа существует в пространстве имен, то открывается существующий объект синхронизации. Если объект синхронизации не существует в пространстве имен, или объект синхронизации другого типа существует в пространстве имен, 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 см. в разделе Object Names.

Если объект синхронизации запрошенного типа существует в пространстве имен, то открывается существующий объект синхронизации. Если объект синхронизации не существует в пространстве имен, или объект синхронизации другого типа существует в пространстве имен, false возвращается.

Чтобы создать системный мьютекс, если он еще не существует, используйте один из Mutex конструкторов, имеющих name параметр.

Если вы не уверены, существует ли именованный мьютекс, используйте эту перегрузку метода вместо OpenExisting(String, MutexRights) перегрузки метода, которая вызывает исключение, если мьютекс не существует.

Параметр rights должен включать MutexRights.Synchronize флаг, чтобы разрешить потокам ждать мьютекса, а MutexRights.Modify флаг позволяет потокам вызывать ReleaseMutex метод.

Несколько вызовов этого метода, которые используют одно и то же значение, name не обязательно возвращают один и тот Mutex же объект, хотя возвращаемые объекты представляют тот же именованный системный мьютекс.

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

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

TryOpenExisting(String, NamedWaitHandleOptions, Mutex)

Исходный код:
Mutex.cs
Исходный код:
Mutex.cs

Открывает указанный именованный мьютекс, если он уже существует, и возвращает значение, указывающее, выполнена ли операция успешно. Если параметры заданы только для текущего пользователя, элементы управления доступом объекта проверяются для вызывающего пользователя.

public:
 static bool TryOpenExisting(System::String ^ name, System::Threading::NamedWaitHandleOptions options, [Runtime::InteropServices::Out] System::Threading::Mutex ^ % result);
public static bool TryOpenExisting(string name, System.Threading.NamedWaitHandleOptions options, out System.Threading.Mutex? result);
static member TryOpenExisting : string * System.Threading.NamedWaitHandleOptions * Mutex -> bool
Public Shared Function TryOpenExisting (name As String, options As NamedWaitHandleOptions, ByRef result As Mutex) As Boolean

Параметры

name
String

Имя объекта синхронизации для совместного использования с другими процессами. Имя чувствительно к регистру.

options
NamedWaitHandleOptions

Параметры области именованного системного мьютекса. По умолчанию доступ ограничен текущим пользователем и текущим сеансом. Указанные параметры могут повлиять на пространство имен для имени и доступа к базовому объекту мьютекса системы.

result
Mutex

При возврате этого метода содержит Mutex объект, представляющий именованный мьютекс, если вызов выполнен успешно или null если вызов завершился ошибкой. Этот параметр рассматривается как неинициализированный.

Возвращаемое значение

true Значение , если именованный мьютекс был успешно открыт; falseв противном случае . В некоторых случаях false может быть возвращено недопустимое имя.

Исключения

name — пустая строка.

name равно null.

name недопустим. Это может быть по разным причинам, включая некоторые ограничения, которые могут быть помещены операционной системой, например неизвестный префикс или недопустимые символы. Обратите внимание, что имя и распространенные префиксы "Global\" и "Local\" чувствительны к регистру. Для некоторых недопустимых имен метод может вернуться false .

–или–

Произошла другая ошибка. Свойство HResult может предоставить дополнительные сведения.

Слишком длинное значение name. Ограничения длины могут зависеть от операционной системы или конфигурации.

Именованный мьютекс существует, но у пользователя нет доступа к безопасности, необходимого для его использования.

Комментарии

Если объект синхронизации запрошенного типа существует в пространстве имен, то открывается существующий объект синхронизации. Однако если options указан доступ, ограниченный текущим пользователем, и объект синхронизации несовместим с ним, false возвращается. Если объект синхронизации не существует в пространстве имен, или объект синхронизации другого типа существует в пространстве имен, false возвращается также.

Чтобы создать системный мьютекс, если он еще не существует, используйте один из Mutex конструкторов, имеющих name параметр.

Если вы не уверены, существует ли именованный мьютекс, используйте эту перегрузку метода вместо OpenExisting(String) перегрузки метода, которая вызывает исключение, если мьютекс не существует.

Несколько вызовов этого метода, которые используют одно и то же значение, name не обязательно возвращают один и тот Mutex же объект, хотя возвращаемые объекты представляют тот же именованный системный мьютекс.

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

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