Mutex.TryOpenExisting Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Abre una exclusión mutua con nombre especificada, si ya existe, y devuelve un valor que indica si la operación se realizó correctamente.
Sobrecargas
TryOpenExisting(String, Mutex) |
Abre la exclusión mutua con nombre especificada, si ya existe, y devuelve un valor que indica si la operación se realizó correctamente. |
TryOpenExisting(String, MutexRights, Mutex) |
Abre la exclusión mutua con nombre especificada, si ya existe, con el acceso de seguridad deseado y devuelve un valor que indica si la operación se realizó correctamente. |
TryOpenExisting(String, Mutex)
- Source:
- Mutex.cs
- Source:
- Mutex.cs
- Source:
- Mutex.cs
Abre la exclusión mutua con nombre especificada, 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::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);
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
Nombre del objeto de sincronización que se va a 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
- Mutex
Cuando este método vuelve, contiene un objeto Mutex que representa la exclusión mutua con nombre si la llamada se realizó correctamente, o null
si se produjo un error en la llamada. Este parámetro se trata como sin inicializar.
Devoluciones
true
si la exclusión mutua con nombre se abrió correctamente; si no, 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.
La exclusión mutua con nombre existe, pero el usuario no tiene el acceso de seguridad necesario para usarla.
Comentarios
name
puede tener el prefijo o Global\
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 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 un tipo diferente en el espacio de nombres, false
se devuelve.
Para crear la exclusión mutua del sistema cuando aún no existe, use uno de los Mutex constructores que tiene un name
parámetro .
Si no está seguro de si existe una exclusión mutua con nombre, use esta sobrecarga de método en lugar de la sobrecarga del OpenExisting(String) método, lo que produce una excepción si la exclusión mutua no existe.
Varias llamadas a este método que usan el mismo valor para name
no devuelven necesariamente el mismo Mutex objeto, aunque los objetos devueltos representan la misma exclusión mutua del sistema con nombre.
Esta sobrecarga de método es equivalente a llamar a la sobrecarga del TryOpenExisting(String, MutexRights, Mutex) método y especificar MutexRights.Synchronize y MutexRights.Modify derechos, combinados mediante la operación OR bit a bit. Especificar la MutexRights.Synchronize marca permite que un subproceso espere en la exclusión mutua y especificar la MutexRights.Modify marca permite que un subproceso llame al ReleaseMutex método .
Este método no solicita la propiedad de la exclusión mutua.
Se aplica a
TryOpenExisting(String, MutexRights, Mutex)
Abre la exclusión mutua con nombre especificada, 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::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
Nombre del objeto de sincronización que se va a 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
- MutexRights
Combinación bit a bit de los valores de la enumeración que representan el acceso de seguridad deseado.
- result
- Mutex
Cuando este método vuelve, contiene un objeto Mutex que representa la exclusión mutua con nombre si la llamada se realizó correctamente, o null
si se produjo un error en la llamada. Este parámetro se trata como sin inicializar.
Devoluciones
true
si la exclusión mutua con nombre se abrió correctamente; si no, 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.
La exclusión mutua con nombre existe, pero el usuario no tiene el acceso de seguridad necesario para usarla.
Comentarios
name
puede tener el prefijo o Global\
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 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 un tipo diferente en el espacio de nombres, false
se devuelve.
Para crear la exclusión mutua del sistema cuando aún no existe, use uno de los Mutex constructores que tiene un name
parámetro .
Si no está seguro de si existe una exclusión mutua con nombre, use esta sobrecarga de método en lugar de la sobrecarga del OpenExisting(String, MutexRights) método, lo que produce una excepción si la exclusión mutua no existe.
El rights
parámetro debe incluir la MutexRights.Synchronize marca para permitir que los subprocesos esperen en la exclusión mutua y la MutexRights.Modify marca para permitir que los subprocesos llamen al ReleaseMutex método .
Varias llamadas a este método que usan el mismo valor para name
no devuelven necesariamente el mismo Mutex objeto, aunque los objetos devueltos representan la misma exclusión mutua del sistema con nombre.
Este método no solicita la propiedad de la exclusión mutua.