EventWaitHandle.TryOpenExisting Método

Definição

Abre um evento de sincronização nomeado especificado, se ele já existir e retorna um valor que indica se a operação foi bem-sucedida.

Sobrecargas

TryOpenExisting(String, EventWaitHandle)

Abre o evento de sincronização nomeado especificado, se ele já existir e retorna um valor que indica se a operação foi bem-sucedida.

TryOpenExisting(String, EventWaitHandleRights, EventWaitHandle)

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

TryOpenExisting(String, EventWaitHandle)

Abre o evento de sincronização nomeado especificado, se ele já existir e retorna um valor que indica se a operação foi bem-sucedida.

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

Parâmetros

name
String

O nome do objeto de sincronização a ser aberto e compartilhado com outros processos. O nome diferencia maiúsculas de minúsculas.

result
EventWaitHandle

Quando é retornado, esse método contém um objeto EventWaitHandle que representa o evento de sincronização nomeado se a chamada tiver sido bem-sucedida ou null se a chamada tiver falhado. Esse parâmetro é tratado como não inicializado.

Retornos

Boolean

true se o evento de sincronização nomeado foi aberto com êxito; caso contrário, false. Em alguns casos, false pode ser retornado para nomes inválidos.

Atributos

Exceções

name é uma cadeia de caracteres vazia.

  • ou -

Somente .NET Framework: name é maior que MAX_PATH (260 caracteres).

name é null.

name é inválido. Isso pode ser por vários motivos, incluindo algumas restrições impostas pelo sistema operacional, como um prefixo desconhecido ou caracteres inválidos. Observe que o nome e os prefixos comuns "Global" e "Local" diferenciam maiúsculas de minúsculas. Para alguns nomes inválidos, o método pode retornar false em vez disso.

  • ou -

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

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

O evento nomeado existe, mas o usuário não tem o acesso de segurança desejado.

Comentários

Pode name ser prefixado com Global\ ou Local\ especificar um namespace. Quando o Global namespace é especificado, o objeto de sincronização pode ser compartilhado com todos os processos no sistema. 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. 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. Em sistemas operacionais semelhantes ao Unix, cada shell tem sua própria sessão. Objetos de sincronização local de sessão podem ser apropriados para sincronizar entre processos com uma relação pai/filho em que todos eles são executados na mesma sessão. Para obter mais informações sobre nomes de objetos de sincronização em Windows, consulte Nomes de Objeto.

Se existir um objeto de sincronização do tipo solicitado no namespace, o objeto de sincronização existente será aberto. Se um objeto de sincronização não existir no namespace ou um objeto de sincronização de um tipo diferente existir no namespace, false será retornado.

Para criar o evento do sistema quando ele ainda não existir, use um dos EventWaitHandle construtores que tem um name parâmetro.

Se você não tiver certeza se existe um evento de sincronização nomeado, use essa sobrecarga de método em vez da sobrecarga do método, o OpenExisting(String) que gerará uma exceção se o evento de sincronização não existir.

Essa sobrecarga de método é equivalente a chamar a sobrecarga do TryOpenExisting(String, EventWaitHandleRights, EventWaitHandle) método e especificar EventWaitHandleRights.Synchronize e EventWaitHandleRights.Modify os direitos, combinados usando a operação OR bit a bit. Especificar o EventWaitHandleRights.Synchronize sinalizador permite que um thread aguarde o evento do sistema nomeado e especificar o EventWaitHandleRights.Modify sinalizador permite que um thread chame e Set Reset métodos.

Várias chamadas para esse método que usam o mesmo valor name não necessariamente retornam o mesmo EventWaitHandle objeto, embora os objetos retornados representem o mesmo evento de sistema nomeado.

Aplica-se a

TryOpenExisting(String, EventWaitHandleRights, EventWaitHandle)

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

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

Parâmetros

name
String

O nome do evento de sincronização de sistema a ser aberto.

rights
EventWaitHandleRights

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

result
EventWaitHandle

Quando é retornado, esse método contém um objeto EventWaitHandle que representa o evento de sincronização nomeado se a chamada tiver sido bem-sucedida ou null se a chamada tiver falhado. Esse parâmetro é tratado como não inicializado.

Retornos

Boolean

true se o evento de sincronização nomeado foi aberto com êxito; caso contrário, false. Em alguns casos, false pode ser retornado para nomes inválidos.

Atributos

Exceções

name é uma cadeia de caracteres vazia.

  • ou -

Somente .NET Framework: name é maior que MAX_PATH (260 caracteres).

name é null.

name é inválido. Isso pode ser por vários motivos, incluindo algumas restrições impostas pelo sistema operacional, como um prefixo desconhecido ou caracteres inválidos. Observe que o nome e os prefixos comuns "Global" e "Local" diferenciam maiúsculas de minúsculas. Para alguns nomes inválidos, o método pode retornar false em vez disso.

  • ou -

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

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

O evento nomeado existe, mas o usuário não tem o acesso de segurança desejado.

Comentários

Pode name ser prefixado com Global\ ou Local\ especificar um namespace. Quando o Global namespace é especificado, o objeto de sincronização pode ser compartilhado com todos os processos no sistema. 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. 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. Em sistemas operacionais semelhantes ao Unix, cada shell tem sua própria sessão. Objetos de sincronização local de sessão podem ser apropriados para sincronizar entre processos com uma relação pai/filho em que todos eles são executados na mesma sessão. Para obter mais informações sobre nomes de objetos de sincronização em Windows, consulte Nomes de Objeto.

Se existir um objeto de sincronização do tipo solicitado no namespace, o objeto de sincronização existente será aberto. Se um objeto de sincronização não existir no namespace ou um objeto de sincronização de um tipo diferente existir no namespace, false será retornado.

Para criar o evento do sistema quando ele ainda não existir, use um dos EventWaitHandle construtores que tem um name parâmetro.

Se você não tiver certeza se existe um evento de sincronização nomeado, use essa sobrecarga de método em vez da sobrecarga do método, o OpenExisting(String, EventWaitHandleRights) que gerará uma exceção se o evento de sincronização não existir.

O rights parâmetro deve incluir o EventWaitHandleRights.Synchronize sinalizador para permitir que os threads aguardem no evento e o EventWaitHandleRights.Modify sinalizador para permitir que os threads chamem e Set Reset os métodos.

Várias chamadas para esse método que usam o mesmo valor name não necessariamente retornam o mesmo EventWaitHandle objeto, embora os objetos retornados representem o mesmo evento de sistema nomeado.

Aplica-se a