Mutex.TryOpenExisting Método

Definição

Abre um mutex nomeado especificado, se já existir, e devolve um valor que indica se a operação teve sucesso.

Sobrecargas

Name Description
TryOpenExisting(String, Mutex)

Abre o mutex nomeado especificado, se já existir, e devolve um valor que indica se a operação foi bem-sucedida.

TryOpenExisting(String, MutexRights, Mutex)

Abre o mutex nomeado especificado, se já existir, com o acesso de segurança desejado, e devolve um valor que indica se a operação foi bem-sucedida.

TryOpenExisting(String, Mutex)

Abre o mutex nomeado especificado, se já existir, e devolve um valor que indica se a operação foi bem-sucedida.

public:
 static bool TryOpenExisting(System::String ^ name, [Runtime::InteropServices::Out] System::Threading::Mutex ^ % result);
[System.Security.SecurityCritical]
public static bool TryOpenExisting(string name, out System.Threading.Mutex result);
public static bool TryOpenExisting(string name, out System.Threading.Mutex result);
[<System.Security.SecurityCritical>]
static member TryOpenExisting : string * Mutex -> bool
static member TryOpenExisting : string * Mutex -> bool
Public Shared Function TryOpenExisting (name As String, ByRef result As Mutex) As Boolean

Parâmetros

name
String

O nome do objeto de sincronização a ser partilhado com outros processos. 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.

result
Mutex

Quando este método regressa, contém um Mutex objeto que representa o mutex nomeado caso a chamada tenha tido sucesso, ou null se a chamada tenha falhado. Este parâmetro é tratado como não inicializado.

Devoluções

true se o mutex nomeado fosse aberto com sucesso; caso contrário, false. Em alguns casos, false pode ser devolvido por nomes inválidos.

Atributos

Exceções

name é uma corda vazia.

-ou-

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

name é null.

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. Para alguns nomes inválidos, o método pode ser retornado false em vez disso.

-ou-

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

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

O mutex nomeado existe, mas o utilizador não tem o acesso de segurança necessário para o utilizar.

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 existir um objeto de sincronização do tipo solicitado no namespace, o objeto de sincronização existente é aberto. Se um objeto de sincronização não existir no namespace, ou se existir um objeto de sincronização de outro tipo no namespace, false é devolvido.

Para criar o mutex do sistema quando ainda não existe, use um dos Mutex construtores que tenha um name parâmetro.

Se não tiver a certeza se existe um mutex nomeado, use esta sobrecarga de métodos em vez da OpenExisting(String) sobrecarga de métodos, que gera uma exceção se o mutex não existir.

Múltiplas chamadas a este método que usam o mesmo valor para name não retornam necessariamente o mesmo Mutex objeto, mesmo que os objetos devolvidos representem o mesmo nome mutex do sistema.

Esta sobrecarga de métodos é equivalente a chamar o TryOpenExisting(String, MutexRights, Mutex) método overload e especificar MutexRights.Synchronize e os direitos MutexRights.Modify , combinados usando a operação OR bit a bit. Especificar o MutexRights.Synchronize flag permite que um thread espere no mutex, e especificar o MutexRights.Modify flag permite que o thread chame o ReleaseMutex método.

Este método não solicita a posse do mutex.

Aplica-se a

TryOpenExisting(String, MutexRights, Mutex)

Abre o mutex nomeado especificado, se já existir, com o acesso de segurança desejado, e devolve um valor que indica se a operação foi bem-sucedida.

public:
 static bool TryOpenExisting(System::String ^ name, System::Security::AccessControl::MutexRights rights, [Runtime::InteropServices::Out] System::Threading::Mutex ^ % result);
[System.Security.SecurityCritical]
public static bool TryOpenExisting(string name, System.Security.AccessControl.MutexRights rights, out System.Threading.Mutex result);
[<System.Security.SecurityCritical>]
static member TryOpenExisting : string * System.Security.AccessControl.MutexRights * Mutex -> bool
Public Shared Function TryOpenExisting (name As String, rights As MutexRights, ByRef result As Mutex) As Boolean

Parâmetros

name
String

O nome do objeto de sincronização a ser partilhado com outros processos. 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.

rights
MutexRights

Uma combinação bit a bit dos valores de enumeração que representam o acesso de segurança desejado.

result
Mutex

Quando este método regressa, contém um Mutex objeto que representa o mutex nomeado caso a chamada tenha tido sucesso, ou null se a chamada tenha falhado. Este parâmetro é tratado como não inicializado.

Devoluções

true se o mutex nomeado fosse aberto com sucesso; caso contrário, false. Em alguns casos, false pode ser devolvido por nomes inválidos.

Atributos

Exceções

name é uma corda vazia.

-ou-

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

name é null.

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. Para alguns nomes inválidos, o método pode ser retornado false em vez disso.

-ou-

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

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

O mutex nomeado existe, mas o utilizador não tem o acesso de segurança necessário para o utilizar.

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 existir um objeto de sincronização do tipo solicitado no namespace, o objeto de sincronização existente é aberto. Se um objeto de sincronização não existir no namespace, ou se existir um objeto de sincronização de outro tipo no namespace, false é devolvido.

Para criar o mutex do sistema quando ainda não existe, use um dos Mutex construtores que tenha um name parâmetro.

Se não tiver a certeza se existe um mutex nomeado, use esta sobrecarga de métodos em vez da OpenExisting(String, MutexRights) sobrecarga de métodos, que gera uma exceção se o mutex não existir.

O rights parâmetro deve incluir o MutexRights.Synchronize flag para permitir que os threads esperem no mutex, e o MutexRights.Modify flag para permitir que os threads chamem o ReleaseMutex método.

Múltiplas chamadas a este método que usam o mesmo valor para name não retornam necessariamente o mesmo Mutex objeto, mesmo que os objetos devolvidos representem o mesmo nome mutex do sistema.

Este método não solicita a posse do mutex.

Aplica-se a