Compartir vía


EventWaitHandle.TryOpenExisting Método

Definición

Abre un evento de sincronización con nombre especificado, si ya existe, y devuelve un valor que indica si la operación se realizó correctamente.

Sobrecargas

TryOpenExisting(String, EventWaitHandle)

Abre el evento de sincronización con nombre especificado, si ya existe, y devuelve un valor que indica si la operación se realizó correctamente.

TryOpenExisting(String, EventWaitHandleRights, EventWaitHandle)

Abre el evento de sincronización con nombre especificado, si ya existe, con el acceso de seguridad deseado, y devuelve un valor que indica si la operación se realizó correctamente.

TryOpenExisting(String, EventWaitHandle)

Source:
EventWaitHandle.cs
Source:
EventWaitHandle.cs
Source:
EventWaitHandle.cs

Abre el evento de sincronización con nombre especificado, si ya existe, y devuelve un valor que indica si la operación se realizó correctamente.

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

Nombre del objeto de sincronización que se va a abrir y compartir con otros procesos. El nombre distingue entre mayúsculas y minúsculas. El carácter de barra diagonal inversa (\) está reservado y solo se puede usar para especificar un espacio de nombres. Para obtener más información sobre los espacios de nombres, consulte la sección comentarios. Puede haber más restricciones en el nombre en función del sistema operativo. Por ejemplo, en los sistemas operativos basados en Unix, el nombre después de excluir el espacio de nombres debe ser un nombre de archivo válido.

result
EventWaitHandle

Cuando este método devuelve un resultado, contiene un objeto EventWaitHandle que representa el evento de sincronización con nombre si la llamada se realizó correctamente o null si se produjo un error en la misma. Este parámetro se trata como sin inicializar.

Devoluciones

Es true si el evento de sincronización con nombre se abrió correctamente; de lo contrario, es false. En algunos casos, es posible que se devuelva false para nombres no válidos.

Atributos

Excepciones

name es una cadena vacía.

O bien

Solo .NET Framework: name es mayor que MAX_PATH (260 caracteres).

El valor de name es null.

name no es válido. Esto puede deberse a diversos motivos, incluidas algunas restricciones que puede imponer el sistema operativo, como un prefijo desconocido o caracteres no válidos. Tenga en cuenta que el nombre y los prefijos comunes "Global\" y "Local\" distinguen mayúsculas de minúsculas. Para algunos nombres no válidos, el método puede devolver false en su lugar.

O bien

Hubo algún otro error. La propiedad HResult puede proporcionar más información.

name es demasiado largo. Las restricciones de longitud pueden depender del sistema operativo o la configuración.

El evento con nombre existe, pero el usuario no tiene el acceso de seguridad deseado.

Comentarios

name puede tener como prefijo Global\ o Local\ especificar un espacio de nombres. Cuando se especifica el Global espacio de nombres, el objeto de sincronización se puede compartir con cualquier proceso del sistema. Cuando se especifica el Local espacio de nombres , que también es el valor predeterminado cuando no se especifica ningún espacio de nombres, el objeto de sincronización se puede compartir con procesos en la misma sesión. En Windows, una sesión es una sesión de inicio de sesión y los servicios normalmente se ejecutan en una sesión no interactiva diferente. En sistemas operativos similares a Unix, cada shell tiene su propia sesión. Los objetos de sincronización local de sesión pueden ser adecuados para sincronizar entre procesos con una relación primaria o secundaria en la que se ejecutan todas en la misma sesión. Para obtener más información sobre los nombres de objetos de sincronización en Windows, vea Nombres de objeto.

Si existe un objeto de sincronización del tipo solicitado en el espacio de nombres , se abre el objeto de sincronización existente. Si un objeto de sincronización no existe en el espacio de nombres o existe un objeto de sincronización de otro tipo en el espacio de nombres , false se devuelve.

Para crear el evento del sistema cuando aún no existe, use uno de los EventWaitHandle constructores que tiene un name parámetro .

Si no está seguro de si existe un evento de sincronización con nombre, use esta sobrecarga de método en lugar de la sobrecarga del OpenExisting(String) método, que produce una excepción si el evento de sincronización no existe.

Esta sobrecarga de método equivale a llamar a la sobrecarga del TryOpenExisting(String, EventWaitHandleRights, EventWaitHandle) método y especificar EventWaitHandleRights.Synchronize y EventWaitHandleRights.Modify derechos, combinados mediante la operación OR bit a bit. Especificar la EventWaitHandleRights.Synchronize marca permite a un subproceso esperar en el evento del sistema con nombre y especificar la EventWaitHandleRights.Modify marca permite que un subproceso llame a los Set métodos y Reset .

Varias llamadas a este método que usan el mismo valor para name no devuelven necesariamente el mismo EventWaitHandle objeto, aunque los objetos que se devuelven representan el mismo evento del sistema con nombre.

Se aplica a

TryOpenExisting(String, EventWaitHandleRights, EventWaitHandle)

Abre el evento de sincronización con nombre especificado, si ya existe, con el acceso de seguridad deseado, y devuelve un valor que indica si la operación se realizó correctamente.

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

Nombre del objeto de sincronización que se va a abrir y compartir con otros procesos. El nombre distingue entre mayúsculas y minúsculas. El carácter de barra diagonal inversa (\) está reservado y solo se puede usar para especificar un espacio de nombres. Para obtener más información sobre los espacios de nombres, consulte la sección comentarios. Puede haber más restricciones en el nombre en función del sistema operativo. Por ejemplo, en los sistemas operativos basados en Unix, el nombre después de excluir el espacio de nombres debe ser un nombre de archivo válido.

rights
EventWaitHandleRights

Combinación bit a bit de los valores de la enumeración que representan el acceso de seguridad deseado.

result
EventWaitHandle

Cuando este método devuelve un resultado, contiene un objeto EventWaitHandle que representa el evento de sincronización con nombre si la llamada se realizó correctamente o null si se produjo un error en la misma. Este parámetro se trata como sin inicializar.

Devoluciones

Es true si el evento de sincronización con nombre se abrió correctamente; de lo contrario, es false. En algunos casos, es posible que se devuelva false para nombres no válidos.

Atributos

Excepciones

name es una cadena vacía.

O bien

Solo .NET Framework: name es mayor que MAX_PATH (260 caracteres).

El valor de name es null.

name no es válido. Esto puede deberse a diversos motivos, incluidas algunas restricciones que puede imponer el sistema operativo, como un prefijo desconocido o caracteres no válidos. Tenga en cuenta que el nombre y los prefijos comunes "Global\" y "Local\" distinguen mayúsculas de minúsculas. Para algunos nombres no válidos, el método puede devolver false en su lugar.

O bien

Hubo algún otro error. La propiedad HResult puede proporcionar más información.

name es demasiado largo. Las restricciones de longitud pueden depender del sistema operativo o la configuración.

El evento con nombre existe, pero el usuario no tiene el acceso de seguridad deseado.

Comentarios

name puede tener como prefijo Global\ o Local\ especificar un espacio de nombres. Cuando se especifica el Global espacio de nombres, el objeto de sincronización se puede compartir con cualquier proceso del sistema. Cuando se especifica el Local espacio de nombres , que también es el valor predeterminado cuando no se especifica ningún espacio de nombres, el objeto de sincronización se puede compartir con procesos en la misma sesión. En Windows, una sesión es una sesión de inicio de sesión y los servicios normalmente se ejecutan en una sesión no interactiva diferente. En sistemas operativos similares a Unix, cada shell tiene su propia sesión. Los objetos de sincronización local de sesión pueden ser adecuados para sincronizar entre procesos con una relación primaria o secundaria en la que se ejecutan todas en la misma sesión. Para obtener más información sobre los nombres de objetos de sincronización en Windows, vea Nombres de objeto.

Si existe un objeto de sincronización del tipo solicitado en el espacio de nombres , se abre el objeto de sincronización existente. Si un objeto de sincronización no existe en el espacio de nombres o existe un objeto de sincronización de otro tipo en el espacio de nombres , false se devuelve.

Para crear el evento del sistema cuando aún no existe, use uno de los EventWaitHandle constructores que tiene un name parámetro .

Si no está seguro de si existe un evento de sincronización con nombre, use esta sobrecarga de método en lugar de la sobrecarga del OpenExisting(String, EventWaitHandleRights) método, que produce una excepción si el evento de sincronización no existe.

El rights parámetro debe incluir la EventWaitHandleRights.Synchronize marca para permitir que los subprocesos esperen en el evento y la EventWaitHandleRights.Modify marca para permitir que los subprocesos llamen a los Set métodos y Reset .

Varias llamadas a este método que usan el mismo valor para name no devuelven necesariamente el mismo EventWaitHandle objeto, aunque los objetos que se devuelven representan el mismo evento del sistema con nombre.

Se aplica a