Compartir a través de


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

Definición

Obtiene o crea una instancia de Mutex, lo que permite especificar opcionalmente un objeto MutexSecurity para establecerlo durante la creación de la exclusión mutua.

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 otorgar al subproceso que realiza la llamada la propiedad inicial de la exclusión mutua del sistema con nombre si esta se crea como resultado de dicha llamada; de lo contrario, false.

name
String

Nombre, si el objeto de sincronización se va a compartir con otros procesos; en caso contrario, null o una cadena vacía. 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.

createdNew
Boolean

Cuando este método devuelve un valor, este argumento siempre se establece en true si se crea una exclusión mutua local, es decir, cuando name es null o Empty. Si name tiene un valor no vacío válido, este argumento se establece en true cuando se crea la exclusión mutua del sistema, o bien se establece en false si se encuentra una exclusión mutua del sistema existente con ese nombre. Este parámetro se pasa sin inicializar.

mutexSecurity
MutexSecurity

Seguridad del control de acceso de exclusión mutua opcional que se va a aplicar.

Devoluciones

Objeto que representa una exclusión mutua del sistema, si tiene nombre, o una exclusión mutua local, si no tiene nombre.

Excepciones

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

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.

O bien

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

Solo Windows: name especificó un espacio de nombres desconocido. Consulte Nombres de objetos para obtener más información.

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

No se puede crear un objeto de sincronización con el valor name proporcionado. Un objeto de sincronización de un tipo diferente podría tener el mismo nombre.

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 se proporciona y name ya existe un objeto de sincronización del tipo solicitado en el espacio de nombres , se abre el objeto de sincronización existente. Si ya existe un objeto de sincronización de otro tipo en el espacio de nombres , se produce una WaitHandleCannotBeOpenedException excepción . De lo contrario, se crea un nuevo objeto de sincronización.

Precaución

De forma predeterminada, una exclusión mutua con nombre no está restringida al usuario que lo creó. Es posible que otros usuarios puedan abrir y usar la exclusión mutua, incluida la interferencia con la exclusión mutua escribiendo la exclusión mutua y no saliendo de ella. Para restringir el acceso a usuarios específicos, puede pasar un MutexSecurity al crear la exclusión mutua con nombre. Evite usar exclusiones mutuas con nombre sin restricciones de acceso en sistemas que puedan tener usuarios que no son de confianza que ejecuten código.

Se aplica a