SemaphoreAcl.Create(Int32, Int32, String, Boolean, SemaphoreSecurity) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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.