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


SemaphoreAcl.Create(Int32, Int32, String, Boolean, SemaphoreSecurity) Метод

Определение

Получает или создает экземпляр Semaphore, позволяя при необходимости указать экземпляр SemaphoreSecurity, чтобы задать его при создании события.

public:
 static System::Threading::Semaphore ^ Create(int initialCount, int maximumCount, System::String ^ name, [Runtime::InteropServices::Out] bool % createdNew, System::Security::AccessControl::SemaphoreSecurity ^ semaphoreSecurity);
public static System.Threading.Semaphore Create (int initialCount, int maximumCount, string? name, out bool createdNew, System.Security.AccessControl.SemaphoreSecurity? semaphoreSecurity);
static member Create : int * int * string * bool * System.Security.AccessControl.SemaphoreSecurity -> System.Threading.Semaphore
Public Shared Function Create (initialCount As Integer, maximumCount As Integer, name As String, ByRef createdNew As Boolean, semaphoreSecurity As SemaphoreSecurity) As Semaphore

Параметры

initialCount
Int32

Начальное количество запросов семафора, которое может быть удовлетворено одновременно.

maximumCount
Int32

Максимальное количество запросов семафора, которое может быть удовлетворено одновременно.

name
String

Имя, если объект синхронизации должен использоваться совместно с другими процессами. В противном случае — null или пустая строка. Имя указано с учетом регистра. Символ обратной косой черты (\) зарезервирован и может использоваться только для указания пространства имен. Дополнительные сведения о пространствах имен см. в разделе примечаний. В зависимости от операционной системы могут существовать дополнительные ограничения на имя. Например, в операционных системах под управлением Unix имя после исключения пространства имен должно быть допустимым именем файла.

createdNew
Boolean

Когда данный метод возвращает значение, этому аргументу всегда задается значение true, если создается локальный семафор (то есть, если name имеет значение null или Empty). Если name имеет допустимое непустое значение, этот аргумент получает значение true при создании системного семафора либо значение false в случае обнаружения существующего системного семафора с таким именем. Этот параметр передается неинициализированным.

semaphoreSecurity
SemaphoreSecurity

Применение необязательной защиты управления доступом для семафора.

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

Объект, представляющий системный семафор, если имя задано, или локальный семафор, если имя не задано.

Исключения

initialCount является отрицательным числом. -или-

Значение maximumCount не является положительным числом.

Значение initialCount больше значения maximumCount.

- или -

Только в .NET Framework. name превышает значение MAX_PATH (260 символов).

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

- или -

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

Только в Windows. Для name указано неизвестное пространство имен. Дополнительные сведения см. в статье Имена объектов.

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

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

Комментарии

Может name иметь префикс Global\ или Local\ , чтобы указать пространство имен. Global Если указано пространство имен, объект синхронизации может быть совместно использоваться любым процессам в системе. При указании Local пространства имен, которое также используется по умолчанию, если пространство имен не указано, объект синхронизации может совместно использоваться процессами в одном сеансе. В Windows сеанс является сеансом входа, а службы обычно выполняются в другом неинтерактивном сеансе. В unix-подобных операционных системах каждая оболочка имеет собственный сеанс. Объекты локальной синхронизации сеанса могут подходить для синхронизации между процессами с отношением "родители-потомки", где все они выполняются в одном сеансе. Дополнительные сведения об именах объектов синхронизации в Windows см. в разделе Имена объектов.

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

Внимание!

По умолчанию именованный семафор не ограничивается пользователем, который его создал. Другие пользователи могут открывать и использовать семафор, в том числе вмешиваться в семафор, получив семафор несколько раз и не отпуская его. Чтобы ограничить доступ для определенных пользователей, можно передать SemaphoreSecurity при создании именованного семафора. Избегайте использования именованных семафоров без ограничений доступа в системах, в которых могут выполняться ненадежные пользователи, выполняющие код.

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