Mutex.TryOpenExisting Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Öffnet einen bestimmten benannten Mutex, wenn er bereits vorhanden ist, und gibt einen Wert zurück, der angibt, ob der Vorgang erfolgreich war.
Überlädt
TryOpenExisting(String, Mutex) |
Öffnet den bestimmten benannten Mutex, wenn er bereits vorhanden ist, und gibt einen Wert zurück, der angibt, ob der Vorgang erfolgreich war. |
TryOpenExisting(String, MutexRights, Mutex) |
Öffnet den angegebenen benannten Mutex, wenn er bereits mit dem gewünschten Sicherheitszugriff vorhanden ist und gibt einen Wert zurück, der angibt, ob der Vorgang erfolgreich war. |
TryOpenExisting(String, Mutex)
- Quelle:
- Mutex.cs
- Quelle:
- Mutex.cs
- Quelle:
- Mutex.cs
Öffnet den bestimmten benannten Mutex, wenn er bereits vorhanden ist, und gibt einen Wert zurück, der angibt, ob der Vorgang erfolgreich war.
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
Parameter
- name
- String
Der Name des Synchronisierungsobjekts, das für andere Prozesse freigegeben werden soll. Bei dem Namen wird die Groß- und Kleinschreibung berücksichtigt. Das umgekehrte Schrägstrichzeichen (\) ist reserviert und kann nur zum Angeben eines Namespace verwendet werden. Weitere Informationen zu Namespaces finden Sie im Abschnitt hinweise. Je nach Betriebssystem kann es weitere Einschränkungen für den Namen geben. Unter Unix-basierten Betriebssystemen muss beispielsweise der Name nach dem Ausschluss des Namespace ein gültiger Dateiname sein.
- result
- Mutex
Enthält nach Beenden der Methode ein Mutex-Objekt, das das benannte Mutex darstellt, wenn der Aufruf erfolgreich ausgeführt wurde, oder null
, wenn der Aufruf fehlgeschlagen ist. Dieser Parameter wird nicht initialisiert behandelt.
Gibt zurück
true
, wenn der benannte Mutex erfolgreich geöffnet wurde; andernfalls false
. In einigen Fällen kann false
für ungültige Namen zurückgegeben werden.
- Attribute
Ausnahmen
name
ist eine leere Zeichenfolge.
- oder -
Nur .NET Framework: name
ist länger als MAX_PATH (260 Zeichen).
name
ist null
.
name
ist ungültig. Dies kann aus verschiedenen Gründen der Fall sein, z. B. durch Einschränkungen, die vom Betriebssystem auferlegt werden, etwa ein unbekanntes Präfix oder ungültige Zeichen. Beachten Sie, dass bei dem Namen und den allgemeinen Präfixen "Global\" und "Local\" die Groß-/Kleinschreibung beachtet wird. Bei einigen ungültigen Namen gibt die Methode möglicherweise stattdessen false
zurück.
- oder -
Es ist ein anderer Fehler aufgetreten. DieHResult
-Eigenschaft stellt möglicherweise weitere Informationen zur Verfügung.
name
ist zu lang. Längeneinschränkungen können vom Betriebssystem oder der Konfiguration abhängen.
Das benannte Mutex ist vorhanden, aber der Benutzer verfügt nicht über den Sicherheitszugriff, der für die Verwendung erforderlich ist.
Hinweise
Kann name
mit Global\
dem Präfix oder Local\
versehen werden, um einen Namespace anzugeben. Wenn der Global
Namespace angegeben ist, kann das Synchronisierungsobjekt für alle Prozesse im System freigegeben werden. Wenn der Local
Namespace angegeben wird, was auch der Standardwert ist, wenn kein Namespace angegeben wird, kann das Synchronisierungsobjekt für Prozesse in derselben Sitzung freigegeben werden. Unter Windows ist eine Sitzung eine Anmeldesitzung, und Dienste werden in der Regel in einer anderen nicht interaktiven Sitzung ausgeführt. Unter Unix-ähnlichen Betriebssystemen verfügt jede Shell über eine eigene Sitzung. Sitzungslokale Synchronisierungsobjekte eignen sich möglicherweise für die Synchronisierung zwischen Prozessen mit einer über-/untergeordneten Beziehung, in der sie alle in derselben Sitzung ausgeführt werden. Weitere Informationen zu Synchronisierungsobjektnamen unter Windows finden Sie unter Objektnamen.
Wenn im Namespace ein Synchronisierungsobjekt des angeforderten Typs vorhanden ist, wird das vorhandene Synchronisierungsobjekt geöffnet. Wenn im Namespace kein Synchronisierungsobjekt vorhanden ist oder ein Synchronisierungsobjekt eines anderen Typs im Namespace vorhanden ist, false
wird zurückgegeben.
Verwenden Sie einen der Mutex Konstruktoren mit einem name
Parameter, um den Systemmutex zu erstellen, wenn er noch nicht vorhanden ist.
Wenn Sie unsicher sind, ob ein benannter Mutex vorhanden ist, verwenden Sie diese Methodenüberladung anstelle der OpenExisting(String) Methodenüberladung, die eine Ausnahme auslöst, wenn der Mutex nicht vorhanden ist.
Mehrere Aufrufe dieser Methode, die denselben Wert für name
verwenden, geben nicht notwendigerweise dasselbe Mutex Objekt zurück, obwohl die zurückgegebenen Objekte den gleichen benannten Systemmutex darstellen.
Diese Methodenüberladung entspricht dem Aufrufen der TryOpenExisting(String, MutexRights, Mutex) Methodenüberladung und dem Angeben MutexRights.Synchronize von Rechten und MutexRights.Modify kombiniert mit der bitweisen OR-Operation. Die Angabe des MutexRights.Synchronize Flags ermöglicht es einem Thread, auf den Mutex zu warten, und die Angabe des MutexRights.Modify Flags ermöglicht es einem Thread, die ReleaseMutex -Methode aufzurufen.
Diese Methode fordert den Besitz des Mutex nicht an.
Gilt für:
TryOpenExisting(String, MutexRights, Mutex)
Öffnet den angegebenen benannten Mutex, wenn er bereits mit dem gewünschten Sicherheitszugriff vorhanden ist und gibt einen Wert zurück, der angibt, ob der Vorgang erfolgreich war.
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
Parameter
- name
- String
Der Name des Synchronisierungsobjekts, das für andere Prozesse freigegeben werden soll. Bei dem Namen wird die Groß- und Kleinschreibung berücksichtigt. Das umgekehrte Schrägstrichzeichen (\) ist reserviert und kann nur zum Angeben eines Namespace verwendet werden. Weitere Informationen zu Namespaces finden Sie im Abschnitt hinweise. Je nach Betriebssystem kann es weitere Einschränkungen für den Namen geben. Unter Unix-basierten Betriebssystemen muss beispielsweise der Name nach dem Ausschluss des Namespace ein gültiger Dateiname sein.
- rights
- MutexRights
Eine bitweise Kombination von Enumerationswerten, die die gewünschten Sicherheitszugriffsrechte darstellen.
- result
- Mutex
Enthält nach Beenden der Methode ein Mutex-Objekt, das das benannte Mutex darstellt, wenn der Aufruf erfolgreich ausgeführt wurde, oder null
, wenn der Aufruf fehlgeschlagen ist. Dieser Parameter wird nicht initialisiert behandelt.
Gibt zurück
true
, wenn der benannte Mutex erfolgreich geöffnet wurde; andernfalls false
. In einigen Fällen kann false
für ungültige Namen zurückgegeben werden.
- Attribute
Ausnahmen
name
ist eine leere Zeichenfolge.
- oder -
Nur .NET Framework: name
ist länger als MAX_PATH (260 Zeichen).
name
ist null
.
name
ist ungültig. Dies kann aus verschiedenen Gründen der Fall sein, z. B. durch Einschränkungen, die vom Betriebssystem auferlegt werden, etwa ein unbekanntes Präfix oder ungültige Zeichen. Beachten Sie, dass bei dem Namen und den allgemeinen Präfixen "Global\" und "Local\" die Groß-/Kleinschreibung beachtet wird. Bei einigen ungültigen Namen gibt die Methode möglicherweise stattdessen false
zurück.
- oder -
Es ist ein anderer Fehler aufgetreten. DieHResult
-Eigenschaft stellt möglicherweise weitere Informationen zur Verfügung.
name
ist zu lang. Längeneinschränkungen können vom Betriebssystem oder der Konfiguration abhängen.
Das benannte Mutex ist vorhanden, aber der Benutzer verfügt nicht über den Sicherheitszugriff, der für die Verwendung erforderlich ist.
Hinweise
Kann name
mit Global\
dem Präfix oder Local\
versehen werden, um einen Namespace anzugeben. Wenn der Global
Namespace angegeben ist, kann das Synchronisierungsobjekt für alle Prozesse im System freigegeben werden. Wenn der Local
Namespace angegeben wird, was auch der Standardwert ist, wenn kein Namespace angegeben wird, kann das Synchronisierungsobjekt für Prozesse in derselben Sitzung freigegeben werden. Unter Windows ist eine Sitzung eine Anmeldesitzung, und Dienste werden in der Regel in einer anderen nicht interaktiven Sitzung ausgeführt. Unter Unix-ähnlichen Betriebssystemen verfügt jede Shell über eine eigene Sitzung. Sitzungslokale Synchronisierungsobjekte eignen sich möglicherweise für die Synchronisierung zwischen Prozessen mit einer über-/untergeordneten Beziehung, in der sie alle in derselben Sitzung ausgeführt werden. Weitere Informationen zu Synchronisierungsobjektnamen unter Windows finden Sie unter Objektnamen.
Wenn im Namespace ein Synchronisierungsobjekt des angeforderten Typs vorhanden ist, wird das vorhandene Synchronisierungsobjekt geöffnet. Wenn im Namespace kein Synchronisierungsobjekt vorhanden ist oder ein Synchronisierungsobjekt eines anderen Typs im Namespace vorhanden ist, false
wird zurückgegeben.
Verwenden Sie einen der Mutex Konstruktoren mit einem name
Parameter, um den Systemmutex zu erstellen, wenn er noch nicht vorhanden ist.
Wenn Sie unsicher sind, ob ein benannter Mutex vorhanden ist, verwenden Sie diese Methodenüberladung anstelle der OpenExisting(String, MutexRights) Methodenüberladung, die eine Ausnahme auslöst, wenn der Mutex nicht vorhanden ist.
Der rights
Parameter muss das MutexRights.Synchronize Flag enthalten, damit Threads auf den Mutex warten können, und das MutexRights.Modify -Flag, damit Threads die ReleaseMutex -Methode aufrufen können.
Mehrere Aufrufe dieser Methode, die denselben Wert für name
verwenden, geben nicht notwendigerweise dasselbe Mutex Objekt zurück, obwohl die zurückgegebenen Objekte den gleichen benannten Systemmutex darstellen.
Diese Methode fordert den Besitz des Mutex nicht an.