SemaphoreAcl.Create(Int32, Int32, String, Boolean, SemaphoreSecurity) 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í.
Obtiene o crea una Semaphore instancia, lo que permite especificar una SemaphoreSecurity instancia opcionalmente para establecerla durante la creación del evento.
public:
static System::Threading::Semaphore ^ Create(int initialCount, int maximumCount, System::String ^ name, [Runtime::InteropServices::Out] bool % createdNew, System::Security::AccessControl::SemaphoreSecurity ^ semaphoreSecurity);
public static System.Threading.Semaphore Create(int initialCount, int maximumCount, string? name, out bool createdNew, System.Security.AccessControl.SemaphoreSecurity? semaphoreSecurity);
static member Create : int * int * string * bool * System.Security.AccessControl.SemaphoreSecurity -> System.Threading.Semaphore
Public Shared Function Create (initialCount As Integer, maximumCount As Integer, name As String, ByRef createdNew As Boolean, semaphoreSecurity As SemaphoreSecurity) As Semaphore
Parámetros
- initialCount
- Int32
Número inicial de solicitudes para el semáforo que se puede satisfacer simultáneamente.
- maximumCount
- Int32
Número máximo de solicitudes para el semáforo que se puede satisfacer simultáneamente.
- name
- String
El nombre, si el objeto de sincronización se va a compartir con otros procesos; de lo contrario, null o una cadena vacía. El nombre distingue mayúsculas de 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 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, este argumento siempre se establece true en si se crea un semáforo local; es decir, cuando name es null o Empty. Si name tiene un valor válido y no vacío, este argumento se establece en true cuando se crea el semáforo del sistema o se establece false en si se encuentra un semáforo del sistema existente con ese nombre. Este parámetro se pasa sin inicializar.
- semaphoreSecurity
- SemaphoreSecurity
La seguridad de control de acceso de semáforo opcional que se va a aplicar.
Devoluciones
Objeto que representa un semáforo del sistema, si se denomina o un semáforo local, si no tiene nombres.
Excepciones
initialCount es un número negativo.
O bien
maximumCount no es un número positivo.
initialCount es mayor que maximumCount.
O bien
solo .NET Framework: name es mayor que MAX_PATH (260 caracteres).
name no es válido. Esto puede deberse a varias razones, incluidas algunas restricciones que el sistema operativo puede colocar, 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 HResult propiedad puede proporcionar más información.
Windows solo: name especificó un espacio de nombres desconocido. Consulte Nombres de objeto 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 proporcionado name . Un objeto de sincronización de un tipo diferente podría tener el mismo nombre.
Comentarios
name puede tener Global\ como prefijo 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 en la misma sesión. Para obtener más información sobre los nombres de objeto de sincronización en Windows, vea Object Names.
Si se proporciona y ya existe un name 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.
Caution
De forma predeterminada, un semáforo con nombre no está restringido al usuario que lo creó. Otros usuarios pueden abrir y usar el semáforo, incluida la interferencia con el semáforo al adquirir el semáforo varias veces y no liberarlo. Para restringir el acceso a usuarios específicos, puede pasar un al SemaphoreSecurity crear el semáforo con nombre. Evite usar semáforos con nombre sin restricciones de acceso en sistemas que podrían tener usuarios que no son de confianza que ejecuten código.