SemaphoreAcl.Create(Int32, Int32, String, Boolean, SemaphoreSecurity) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene o crea un'istanza di Semaphore, che facoltativamente consente di specificare un'istanza di SemaphoreSecurity per impostarla durante la creazione dell'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
Parametri
- initialCount
- Int32
Numero iniziale di richieste per il semaforo che possono essere soddisfatte contemporaneamente.
- maximumCount
- Int32
Numero massimo di richieste per il semaforo che possono essere soddisfatte contemporaneamente.
- name
- String
Il nome, se l'oggetto di sincronizzazione deve essere condiviso con altri processi; in caso contrario null
o una stringa vuota. Per il nome è prevista la distinzione tra maiuscole e minuscole. Il carattere barra rovesciata (\) è riservato e può essere usato solo per specificare uno spazio dei nomi. Per altre informazioni sugli spazi dei nomi, vedere la sezione osservazioni. Potrebbero esserci ulteriori restrizioni per il nome a seconda del sistema operativo. Ad esempio, nei sistemi operativi basati su Unix, il nome dopo l'esclusione dello spazio dei nomi deve essere un nome file valido.
- createdNew
- Boolean
Quando questo metodo viene restituito, questo argomento è sempre impostato su true
se viene creato un semaforo locale, ovvero quando name
è null
o Empty. Se name
ha un valore valido non vuoto, questo argomento è impostato su true
quando il semaforo di sistema viene creato oppure è impostato su false
se esiste un semaforo di sistema con tale nome. Questo parametro viene passato non inizializzato.
- semaphoreSecurity
- SemaphoreSecurity
Sicurezza facoltativa del controllo di accesso del semaforo da applicare.
Restituisce
Oggetto che rappresenta un semaforo di sistema, se denominato, o un semaforo locale, se senza nome.
Eccezioni
initialCount
è un numero negativo.
-oppure-
maximumCount
non è un numero positivo.
initialCount
è maggiore di maximumCount
.
-oppure-
Solo .NET Framework: la lunghezza di name
supera MAX_PATH (260 caratteri).
name
non è valido. I motivi possono essere diversi, e tra questi limitazioni implementate dal sistema operativo, come prefisso sconosciuto o caratteri non validi. Si noti che il nome e i prefissi comuni "Global\" e "Local\" fanno distinzione tra maiuscole e minuscole.
-oppure-
Si è verificato un altro errore. È possibile che la proprietà HResult
offra ulteriori informazioni.
Solo Windows: name
ha specificato uno spazio dei nomi sconosciuto. Per altre informazioni, vedere Object Names (Nomi oggetti).
name
supera la lunghezza consentita. Le limitazioni di lunghezza possono dipendere dal sistema operativo o dalla configurazione.
Non è possibile creare un oggetto di sincronizzazione con l'elemento name
specificato. Un oggetto di sincronizzazione di un tipo diverso potrebbe avere lo stesso nome.
Commenti
Può name
essere preceduto Global\
da o Local\
per specificare uno spazio dei nomi. Quando si specifica lo Global
spazio dei nomi, l'oggetto di sincronizzazione può essere condiviso con tutti i processi nel sistema. Quando si specifica lo Local
spazio dei nomi , che è anche l'impostazione predefinita quando non viene specificato alcuno spazio dei nomi, l'oggetto di sincronizzazione può essere condiviso con i processi nella stessa sessione. In Windows, una sessione è una sessione di accesso e i servizi vengono in genere eseguiti in una sessione diversa non interattiva. Nei sistemi operativi simili a Unix, ogni shell ha una sessione specifica. Gli oggetti di sincronizzazione locale della sessione possono essere appropriati per la sincronizzazione tra processi con una relazione padre/figlio in cui vengono eseguiti tutti nella stessa sessione. Per altre informazioni sui nomi degli oggetti di sincronizzazione in Windows, vedere Nomi di oggetti.
Se viene specificato un name
oggetto e un oggetto di sincronizzazione del tipo richiesto esiste già nello spazio dei nomi, viene aperto l'oggetto di sincronizzazione esistente. Se nello spazio dei nomi esiste già un oggetto di sincronizzazione di un tipo diverso, viene generata un'eccezione WaitHandleCannotBeOpenedException
. In caso contrario, viene creato un nuovo oggetto di sincronizzazione.
Attenzione
Per impostazione predefinita, un semaforo denominato non è limitato all'utente che lo ha creato. Altri utenti possono essere in grado di aprire e usare il semaforo, inclusa l'interazione con il semaforo acquisendo il semaforo più volte e non rilasciandolo. Per limitare l'accesso a utenti specifici, è possibile passare un oggetto SemaphoreSecurity durante la creazione del semaforo denominato. Evitare di usare semafori denominati senza restrizioni di accesso per i sistemi che potrebbero avere utenti non attendibili che eseguono codice.