Semaphore.TryOpenExisting 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.
Apre un semaforo denominato specificato, se già esistente, e restituisce un valore che indica se l'operazione è riuscita.
Overload
TryOpenExisting(String, Semaphore) |
Apre il semaforo denominato specificato, se esistente, e restituisce un valore che indica se l'operazione è riuscita. |
TryOpenExisting(String, SemaphoreRights, Semaphore) |
Apre il semaforo denominato specificato, se esistente, con l'accesso di sicurezza desiderato, e restituisce un valore che indica se l'operazione è riuscita. |
TryOpenExisting(String, Semaphore)
- Origine:
- Semaphore.cs
- Origine:
- Semaphore.cs
- Origine:
- Semaphore.cs
Apre il semaforo denominato specificato, se esistente, e restituisce un valore che indica se l'operazione è riuscita.
public:
static bool TryOpenExisting(System::String ^ name, [Runtime::InteropServices::Out] System::Threading::Semaphore ^ % result);
public static bool TryOpenExisting (string name, out System.Threading.Semaphore result);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static bool TryOpenExisting (string name, out System.Threading.Semaphore? result);
public static bool TryOpenExisting (string name, out System.Threading.Semaphore? result);
static member TryOpenExisting : string * Semaphore -> bool
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member TryOpenExisting : string * Semaphore -> bool
Public Shared Function TryOpenExisting (name As String, ByRef result As Semaphore) As Boolean
Parametri
- name
- String
Nome dell'oggetto di sincronizzazione da condividere con altri processi. 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.
- result
- Semaphore
Quando viene eseguita la restituzione del metodo, quest'ultimo contiene un oggetto Semaphore che rappresenta il semaforo denominato se la chiamata è riuscita o null
se la chiamata non è riuscita. Questo parametro viene trattato come non inizializzato.
Restituisce
true
se l'apertura del semaforo denominato è riuscita; in caso contrario, false
. In alcuni casi false
può essere restituito per nomi non validi.
- Attributi
Eccezioni
Il parametro name
è una stringa vuota.
-oppure-
Solo .NET Framework: la lunghezza di name
supera MAX_PATH (260 caratteri).
name
costruito in modo predefinito è null
.
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. Per alcuni nomi non validi, il metodo potrebbe invece restituire false
.
-oppure-
Si è verificato un altro errore. È possibile che la proprietà HResult
offra ulteriori informazioni.
name
supera la lunghezza consentita. Le limitazioni di lunghezza possono dipendere dal sistema operativo o dalla configurazione.
Il semaforo denominato esiste, ma l'utente non dispone dell'accesso di sicurezza necessario per usarlo.
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 nello spazio dei nomi esiste un oggetto di sincronizzazione del tipo richiesto, viene aperto l'oggetto di sincronizzazione esistente. Se non esiste un oggetto di sincronizzazione nello spazio dei nomi o se esiste un oggetto di sincronizzazione di un tipo diverso nello spazio dei nomi , false
viene restituito .
Per creare il semaforo di sistema quando non esiste già, usare uno dei Semaphore costruttori con un name
parametro .
Se non si è certi se esiste un semaforo denominato, utilizzare questo overload del metodo anziché l'overload del OpenExisting(String) metodo, che genera un'eccezione se il semaforo non esiste.
Questo overload del metodo equivale a chiamare l'overload del TryOpenExisting metodo e specificare SemaphoreRights.Synchronize e SemaphoreRights.Modify diritti, combinati usando l'operazione OR bit per bit. Specificare il SemaphoreRights.Synchronize flag consente a un thread di immettere il semaforo e di specificare il SemaphoreRights.Modify flag consente a un thread di chiamare il Release metodo .
Si applica a
TryOpenExisting(String, SemaphoreRights, Semaphore)
Apre il semaforo denominato specificato, se esistente, con l'accesso di sicurezza desiderato, e restituisce un valore che indica se l'operazione è riuscita.
public:
static bool TryOpenExisting(System::String ^ name, System::Security::AccessControl::SemaphoreRights rights, [Runtime::InteropServices::Out] System::Threading::Semaphore ^ % result);
public static bool TryOpenExisting (string name, System.Security.AccessControl.SemaphoreRights rights, out System.Threading.Semaphore result);
static member TryOpenExisting : string * System.Security.AccessControl.SemaphoreRights * Semaphore -> bool
Public Shared Function TryOpenExisting (name As String, rights As SemaphoreRights, ByRef result As Semaphore) As Boolean
Parametri
- name
- String
Nome dell'oggetto di sincronizzazione da condividere con altri processi. 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.
- rights
- SemaphoreRights
Combinazione bit per bit dei valori di enumerazione che rappresentano l'accesso di sicurezza desiderato.
- result
- Semaphore
Quando viene eseguita la restituzione del metodo, quest'ultimo contiene un oggetto Semaphore che rappresenta il semaforo denominato se la chiamata è riuscita o null
se la chiamata non è riuscita. Questo parametro viene trattato come non inizializzato.
Restituisce
true
se l'apertura del semaforo denominato è riuscita; in caso contrario, false
. In alcuni casi false
può essere restituito per nomi non validi.
Eccezioni
Il parametro name
è una stringa vuota.
-oppure-
Solo .NET Framework: la lunghezza di name
supera MAX_PATH (260 caratteri).
name
costruito in modo predefinito è null
.
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. Per alcuni nomi non validi, il metodo potrebbe invece restituire false
.
-oppure-
Si è verificato un altro errore. È possibile che la proprietà HResult
offra ulteriori informazioni.
name
supera la lunghezza consentita. Le limitazioni di lunghezza possono dipendere dal sistema operativo o dalla configurazione.
Il semaforo denominato esiste, ma l'utente non dispone dell'accesso di sicurezza necessario per usarlo.
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 nello spazio dei nomi esiste un oggetto di sincronizzazione del tipo richiesto, viene aperto l'oggetto di sincronizzazione esistente. Se non esiste un oggetto di sincronizzazione nello spazio dei nomi o se esiste un oggetto di sincronizzazione di un tipo diverso nello spazio dei nomi , false
viene restituito .
Per creare il semaforo di sistema quando non esiste già, usare uno dei Semaphore costruttori con un name
parametro .
Se non si è certi se esiste un semaforo denominato, utilizzare questo overload del metodo anziché l'overload del OpenExisting(String, SemaphoreRights) metodo, che genera un'eccezione se il semaforo non esiste.
Il rights
parametro deve includere il SemaphoreRights.Synchronize flag per consentire ai thread di immettere il semaforo e il SemaphoreRights.Modify flag per consentire ai thread di chiamare il Release metodo .
Più chiamate a questo metodo che usano lo stesso valore per name
non restituiscono necessariamente lo stesso Semaphore oggetto, anche se gli oggetti restituiti rappresentano lo stesso semaforo di sistema denominato.