SemaphoreAcl.Create(Int32, Int32, String, Boolean, SemaphoreSecurity) Método

Definição

Obtém ou cria uma Semaphore instância, permitindo que uma SemaphoreSecurity instância seja opcionalmente especificada para a definir durante a criação do evento.

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 pedidos para o semáforo que pode ser satisfeito em simultâneo.

maximumCount
Int32

O número máximo de pedidos para o semáforo que pode ser satisfeito simultaneamente.

name
String

O nome, se o objeto de sincronização for partilhado com outros processos; caso contrário, null ou uma cadeia vazia. O nome é sensível a maiúsculas e minúsculas. O carácter de barra inversa (\) é reservado e só pode ser usado para especificar um namespace. Para mais informações sobre namespaces, consulte a secção de observações. Podem existir restrições adicionais quanto ao nome, dependendo do sistema operativo. Por exemplo, em sistemas operativos baseados em Unix, o nome após excluir o espaço de nomes deve ser um nome de ficheiro válido.

createdNew
Boolean

Quando este método retorna, este argumento é sempre definido para true se for criado um semáforo local; ou seja, quando name é null ou Empty. Se name tem um valor válido e não vazio, este argumento é definido para true quando o semáforo do sistema é criado, ou para false se um semáforo do sistema existente for encontrado com esse nome. Este parâmetro é passado sem inicializar.

semaphoreSecurity
SemaphoreSecurity

A segurança opcional de controlo de acesso por semáforo a aplicar.

Devoluções

Um objeto que representa um semáforo do sistema, se nomeado, ou um semáforo local, se sem nome.

Exceções

initialCount é um número negativo. -ou-

maximumCount não é um número positivo.

initialCount é maior que maximumCount.

-ou-

.NET Framework apenas: name é mais longo que MAX_PATH (260 caracteres).

name é inválido. Isto pode dever-se a várias razões, incluindo algumas restrições que podem ser impostas pelo sistema operativo, como um prefixo desconhecido ou caracteres inválidos. Note que o nome e os prefixos comuns "Global\" e "Local\" são sensíveis a maiúsculas minúsculas.

-ou-

Houve outro erro. A HResult propriedade pode fornecer mais informações.

Windows apenas: name especificava um namespace desconhecido. Consulte Nomes dos Objetos para mais informações.

O name é demasiado longo. As restrições de comprimento podem depender do sistema operativo ou da configuração.

Um objeto de sincronização com o fornecido name não pode ser criado. Um objeto de sincronização de outro tipo pode ter o mesmo nome.

Observações

Podem name ser precedidos por Global\ ou Local\ para especificar um namespace. Quando o Global namespace é especificado, o objeto de sincronização pode ser partilhado com quaisquer processos no sistema. Quando o Local namespace é especificado, que é também o padrão quando não há namespace especificado, o objeto de sincronização pode ser partilhado com processos na mesma sessão. No Windows, uma sessão é uma sessão de login, e os serviços normalmente correm numa sessão diferente e não interativa. Em sistemas operativos do tipo Unix, cada shell tem a sua própria sessão. Os objetos de sincronização local da sessão podem ser apropriados para sincronizar entre processos com uma relação pai/filho, onde todos correm na mesma sessão. Para mais informações sobre nomes de objetos de sincronização no Windows, veja Object Names.

Se a name for fornecido e um objeto de sincronização do tipo solicitado já existir no namespace, o objeto de sincronização existente é aberto. Se já existir um objeto de sincronização de outro tipo no namespace, um WaitHandleCannotBeOpenedException lançamento é lançado. Caso contrário, é criado um novo objeto de sincronização.

Atenção

Por defeito, um semáforo nomeado não está restrito ao utilizador que o criou. Outros utilizadores podem conseguir abrir e usar o semáforo, incluindo interferir com ele ao adquiri-lo várias vezes sem o libertar. Para restringir o acesso a utilizadores específicos, pode passar a SemaphoreSecurity ao criar o semáforo nomeado. Evite usar semáforos nomeados sem restrições de acesso em sistemas que possam ter utilizadores não confiáveis a executar código.

Aplica-se a