Mutex.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 mutex denominato specificato, se esistente, e restituisce un valore che indica se l'operazione è stata completata.
Overload
TryOpenExisting(String, Mutex) |
Apre il mutex denominato specificato, se esistente, e restituisce un valore che indica se l'operazione è stata completata. |
TryOpenExisting(String, MutexRights, Mutex) |
Apre il mutex denominato specificato, se esistente, con l'accesso di sicurezza desiderato, e restituisce un valore che indica se l'operazione è stata completata. |
TryOpenExisting(String, Mutex)
- Origine:
- Mutex.cs
- Origine:
- Mutex.cs
- Origine:
- Mutex.cs
Apre il mutex denominato specificato, se esistente, e restituisce un valore che indica se l'operazione è stata completata.
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
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 della 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 sul 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 di file valido.
- result
- Mutex
Quando questo metodo viene restituito, contiene un oggetto di Mutex che rappresenta il mutex denominato se la chiamata ha esito positivo o null
se la chiamata ha esito negativo. Questo parametro viene trattato come non inizializzato.
Restituisce
true
se il mutex denominato è stato aperto correttamente; 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\" sono 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 mutex denominato esiste, ma l'utente non dispone dell'accesso di sicurezza necessario per usarlo.
Commenti
Può name
essere preceduto da Global\
o Local\
per specificare uno spazio dei nomi. Quando viene specificato lo spazio dei nomi, l'oggetto Global
di sincronizzazione può essere condiviso con tutti i processi nel sistema. Quando viene specificato lo Local
spazio dei nomi, che è anche il valore predefinito quando non viene specificato alcun 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 non interattiva diversa. Nei sistemi operativi Unix, ogni shell ha la propria sessione. 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 oggetti.
Se esiste un oggetto di sincronizzazione del tipo richiesto nello spazio dei nomi, l'oggetto di sincronizzazione esistente viene aperto. Se un oggetto di sincronizzazione non esiste nello spazio dei nomi o un oggetto di sincronizzazione di un tipo diverso esiste nello spazio dei nomi, false
viene restituito.
Per creare il mutex di sistema quando non esiste già, usare uno dei Mutex costruttori con un name
parametro.
Se si è incerti se esiste un mutex denominato, usare questo overload del metodo anziché l'overload del OpenExisting(String) metodo, che genera un'eccezione se il mutex non esiste.
Più chiamate a questo metodo che usano lo stesso valore per name
non restituiscono necessariamente lo stesso Mutex oggetto, anche se gli oggetti restituiti rappresentano lo stesso mutex di sistema denominato.
Questo overload di metodo equivale a chiamare l'overload del TryOpenExisting(String, MutexRights, Mutex) metodo e specificare MutexRights.Synchronize e MutexRights.Modify diritti, combinati usando l'operazione OR bit per bit. La specifica del MutexRights.Synchronize flag consente a un thread di attendere il mutex e specificare il flag consente a un thread di chiamare il ReleaseMutexMutexRights.Modify metodo.
Questo metodo non richiede la proprietà del mutex.
Si applica a
TryOpenExisting(String, MutexRights, Mutex)
Apre il mutex denominato specificato, se esistente, con l'accesso di sicurezza desiderato, e restituisce un valore che indica se l'operazione è stata completata.
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
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 della 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 sul 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 di file valido.
- rights
- MutexRights
Combinazione bit per bit dei valori di enumerazione che rappresentano l'accesso di sicurezza desiderato.
- result
- Mutex
Quando questo metodo viene restituito, contiene un oggetto di Mutex che rappresenta il mutex denominato se la chiamata ha esito positivo o null
se la chiamata ha esito negativo. Questo parametro viene trattato come non inizializzato.
Restituisce
true
se il mutex denominato è stato aperto correttamente; 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\" sono 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 mutex denominato esiste, ma l'utente non dispone dell'accesso di sicurezza necessario per usarlo.
Commenti
Può name
essere preceduto da Global\
o Local\
per specificare uno spazio dei nomi. Quando viene specificato lo spazio dei nomi, l'oggetto Global
di sincronizzazione può essere condiviso con tutti i processi nel sistema. Quando viene specificato lo Local
spazio dei nomi, che è anche il valore predefinito quando non viene specificato alcun 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 non interattiva diversa. Nei sistemi operativi Unix, ogni shell ha la propria sessione. 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 oggetti.
Se esiste un oggetto di sincronizzazione del tipo richiesto nello spazio dei nomi, l'oggetto di sincronizzazione esistente viene aperto. Se un oggetto di sincronizzazione non esiste nello spazio dei nomi o un oggetto di sincronizzazione di un tipo diverso esiste nello spazio dei nomi, false
viene restituito.
Per creare il mutex di sistema quando non esiste già, usare uno dei Mutex costruttori con un name
parametro.
Se si è incerti se esiste un mutex denominato, usare questo overload del metodo anziché l'overload del OpenExisting(String, MutexRights) metodo, che genera un'eccezione se il mutex non esiste.
Il rights
parametro deve includere il flag per consentire ai thread di attendere il MutexRights.Synchronize mutex e il MutexRights.Modify flag per consentire ai thread di chiamare il ReleaseMutex metodo.
Più chiamate a questo metodo che usano lo stesso valore per name
non restituiscono necessariamente lo stesso Mutex oggetto, anche se gli oggetti restituiti rappresentano lo stesso mutex di sistema denominato.
Questo metodo non richiede la proprietà del mutex.