Condividi tramite


Mutex.TryOpenExisting Metodo

Definizione

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.

Si applica a