MutexAcl.Create(Boolean, String, Boolean, MutexSecurity) Método

Definição

Obtém ou cria Mutex instância, permitindo que um MutexSecurity seja opcionalmente especificado para o definir durante a criação do mutex.

public:
 static System::Threading::Mutex ^ Create(bool initiallyOwned, System::String ^ name, [Runtime::InteropServices::Out] bool % createdNew, System::Security::AccessControl::MutexSecurity ^ mutexSecurity);
public static System.Threading.Mutex Create(bool initiallyOwned, string? name, out bool createdNew, System.Security.AccessControl.MutexSecurity? mutexSecurity);
static member Create : bool * string * bool * System.Security.AccessControl.MutexSecurity -> System.Threading.Mutex
Public Shared Function Create (initiallyOwned As Boolean, name As String, ByRef createdNew As Boolean, mutexSecurity As MutexSecurity) As Mutex

Parâmetros

initiallyOwned
Boolean

true para dar ao thread que chama a propriedade inicial do mutex do sistema nomeado se o mutex do sistema nomeado for criado como resultado desta chamada; caso contrário, false.

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 como true se for criado um mutex local; isto é, quando name é null ou Empty. Se name tiver um valor válido não vazio, este argumento é definido para true quando o mutex do sistema é criado, ou para false se um mutex do sistema existente for encontrado com esse nome. Este parâmetro é passado sem inicializar.

mutexSecurity
MutexSecurity

A opção de controlo de acesso mutex de segurança para aplicar.

Devoluções

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

Exceções

.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 mutex nomeado não está restrito ao utilizador que o criou. Outros utilizadores podem conseguir abrir e usar o mutex, incluindo interferir com ele ao entrar e não sair dele. Para restringir o acesso a utilizadores específicos, podes passar um MutexSecurity a ao criar o mutex nomeado. Evite usar mutexes nomeados sem restrições de acesso em sistemas que possam ter utilizadores não confiáveis a executar código.

Aplica-se a