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 см. в разделе Object Names.

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

Предостережение

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

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