SemaphoreAcl.Create(Int32, Int32, String, Boolean, SemaphoreSecurity) Método
Definição
Obtém ou cria uma instância de Semaphore, permitindo que uma instância de SemaphoreSecurity seja especificada opcionalmente para defini-la durante a criação do semáforo.Gets or creates an Semaphore instance, allowing a SemaphoreSecurity instance to be optionally specified to set it during the event creation.
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
Parâmetros
- initialCount
- Int32
O número inicial de solicitações para o semáforo que podem ser atendidas simultaneamente.The initial number of requests for the semaphore that can be satisfied concurrently.
- maximumCount
- Int32
O número máximo de solicitações para o semáforo que podem ser atendidas simultaneamente.The maximum number of requests for the semaphore that can be satisfied concurrently.
- name
- String
O nome, se o objeto de sincronização for ser compartilhado com outros processos; caso contrário, null ou uma cadeia de caracteres vazia.The name, if the synchronization object is to be shared with other processes; otherwise, null or an empty string. O nome diferencia maiúsculas de minúsculas.The name is case-sensitive.
- createdNew
- Boolean
Quando esse método retornar, esse argumento será sempre definido como true se um semáforo local for criado; ou seja, quando name for null ou Empty.When this method returns, this argument is always set to true if a local semaphore is created; that is, when name is null or Empty. Se name tiver um valor não vazio válido, esse argumento será definido como true quando o semáforo do sistema for criado ou será definido como false se um semáforo do sistema existente com esse nome for encontrado.If name has a valid, non-empty value, this argument is set to true when the system semaphore is created, or it is set to false if an existing system semaphore is found with that name. Este parâmetro é passado não inicializado.This parameter is passed uninitialized.
- semaphoreSecurity
- SemaphoreSecurity
A segurança de controle de acesso do semáforo opcional a ser aplicada.The optional semaphore access control security to apply.
Retornos
Um objeto que representará um semáforo do sistema, se for nomeado, ou um semáforo local, se não tiver nome.An object that represents a system semaphore, if named, or a local semaphore, if nameless.
Exceções
initialCount é um número negativo.initialCount is a negative number.
- ou --or-
maximumCount não é um número positivo.maximumCount is not a positive number.
initialCount é maior que maximumCount.initialCount is greater than maximumCount.
- ou --or-
Somente .NET Framework: name é maior que MAX_PATH (260 caracteres)..NET Framework only: name is longer than MAX_PATH (260 characters).
name é inválido.name is invalid. Isso pode ser por vários motivos, incluindo algumas restrições impostas pelo sistema operacional, como um prefixo desconhecido ou caracteres inválidos.This can be for various reasons, including some restrictions that may be placed by the operating system, such as an unknown prefix or invalid characters. Observe que o nome e os prefixos comuns "Global" e "Local" diferenciam maiúsculas de minúsculas.Note that the name and common prefixes "Global" and "Local" are case-sensitive.
- ou --or-
Ocorreu outro erro.There was some other error. A propriedade HResult pode fornecer mais informações.The HResult property may provide more information.
Somente Windows: name especificou um namespace desconhecido.Windows only: name specified an unknown namespace. Confira mais informações em Nomes do objeto.See Object Names for more information.
O name é muito longo.The name is too long. As restrições de comprimento podem depender do sistema operacional ou da configuração.Length restrictions may depend on the operating system or configuration.
Não é possível criar um objeto de sincronização com o name fornecido.A synchronization object with the provided name cannot be created. Um objeto de sincronização de um tipo diferente pode ter o mesmo nome.A synchronization object of a different type might have the same name.
Comentários
O name pode ser prefixado com Global\ or Local\ para especificar um namespace.The name may be prefixed with Global\ or Local\ to specify a namespace. Quando o Global namespace é especificado, o objeto de sincronização pode ser compartilhado com qualquer processo no sistema.When the Global namespace is specified, the synchronization object may be shared with any processes on the system. Quando o Local namespace é especificado, que também é o padrão quando nenhum namespace é especificado, o objeto de sincronização pode ser compartilhado com processos na mesma sessão.When the Local namespace is specified, which is also the default when no namespace is specified, the synchronization object may be shared with processes in the same session. No Windows, uma sessão é uma sessão de logon e os serviços normalmente são executados em uma sessão não interativa diferente.On Windows, a session is a login session, and services typically run in a different non-interactive session. Em sistemas operacionais semelhantes ao Unix, cada shell tem sua própria sessão.On Unix-like operating systems, each shell has its own session. Os objetos de sincronização de sessão local podem ser apropriados para sincronizar entre processos com uma relação pai/filho em que todos eles são executados na mesma sessão.Session-local synchronization objects may be appropriate for synchronizing between processes with a parent/child relationship where they all run in the same session. Para obter mais informações sobre nomes de objetos Synchornization no Windows, consulte nomes de objetos.For more information about synchornization object names on Windows, see Object Names.
Se um name for fornecido e um objeto de sincronização do tipo solicitado já existir no namespace, o objeto de sincronização existente será aberto.If a name is provided and a synchronization object of the requested type already exists in the namespace, the existing synchronization object is opened. Se um objeto de sincronização de um tipo diferente já existir no namespace, um WaitHandleCannotBeOpenedException será gerado.If a synchronization object of a different type already exists in the namespace, a WaitHandleCannotBeOpenedException is thrown. Caso contrário, um novo objeto de sincronização será criado.Otherwise, a new synchronization object is created.