Mutex.TryOpenExisting Methode

Definition

Öffnet einen angegebenen benannten Mutex, sofern er bereits vorhanden ist, und gibt einen Wert zurück, der angibt, ob der Vorgang erfolgreich war.

Überlädt

Name Beschreibung
TryOpenExisting(String, Mutex)

Öffnet den angegebenen benannten Mutex, sofern 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, sofern er bereits vorhanden ist, mit dem gewünschten Sicherheitszugriff und gibt einen Wert zurück, der angibt, ob der Vorgang erfolgreich war.

TryOpenExisting(String, Mutex)

Öffnet den angegebenen benannten Mutex, sofern 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);
[<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ß-/Kleinschreibung beachtet. Das umgekehrte Schrägstrichzeichen (\) ist reserviert und kann nur verwendet werden, um einen Namespace anzugeben. Weitere Informationen zu Namespaces finden Sie im Abschnitt "Hinweise". Je nach Betriebssystem kann es weitere Einschränkungen für den Namen geben. Bei Unix-basierten Betriebssystemen muss beispielsweise der Name nach Ausschluss des Namespaces ein gültiger Dateiname sein.

result
Mutex

Wenn diese Methode zurückgegeben wird, enthält ein Mutex Objekt, das den benannten Mutex darstellt, wenn der Aufruf erfolgreich war oder null wenn der Aufruf fehlgeschlagen ist. Dieser Parameter wird als nicht initialisiert behandelt.

Gibt zurück

truewenn der benannte Mutex erfolgreich geöffnet wurde; andernfalls . false In einigen Fällen false können ungültige Namen zurückgegeben werden.

Attribute

Ausnahmen

name ist eine leere Zeichenfolge.

-oder-

.NET Framework: name ist länger als MAX_PATH (260 Zeichen).

name ist null.

name ist ungültig. Dies kann aus verschiedenen Gründen sein, einschließlich einiger Einschränkungen, die vom Betriebssystem platziert werden können, z. B. ein unbekanntes Präfix oder ungültige Zeichen. Beachten Sie, dass bei namen und allgemeinen Präfixen "Global\" und "Local\" die Groß-/Kleinschreibung beachtet wird. Bei einigen ungültigen Namen kann die Methode stattdessen zurückgegeben werden false .

-oder-

Es gab einen anderen Fehler. Die HResult Eigenschaft kann weitere Informationen bereitstellen.

name ist zu lang. Längenbeschränkungen hängen möglicherweise vom Betriebssystem oder der Konfiguration ab.

Der benannte Mutex ist vorhanden, der Benutzer verfügt jedoch nicht über den sicherheitsrelevanten Zugriff, der für die Verwendung erforderlich ist.

Hinweise

Möglicherweise name wird dem Namespace ein Präfix vorangestellt Global\ oder Local\ angegeben. Wenn der Global Namespace angegeben ist, kann das Synchronisierungsobjekt für alle Prozesse im System freigegeben werden. Wenn der Local Namespace angegeben ist, was auch der Standardwert ist, wenn kein Namespace angegeben wird, kann das Synchronisierungsobjekt für Prozesse in derselben Sitzung freigegeben werden. Bei Windows ist eine Sitzung eine Anmeldesitzung, und Dienste werden in der Regel in einer anderen nicht interaktiven Sitzung ausgeführt. Auf Unix-ähnlichen Betriebssystemen verfügt jede Shell über eine eigene Sitzung. Sitzungslokale Synchronisierungsobjekte können für die Synchronisierung zwischen Prozessen mit einer Beziehung zwischen übergeordnetem/untergeordnetem Element geeignet sein, in der sie alle in derselben Sitzung ausgeführt werden. Weitere Informationen zu Synchronisierungsobjektnamen in Windows finden Sie unter Object Names.

Wenn ein Synchronisierungsobjekt des angeforderten Typs im Namespace vorhanden ist, wird das vorhandene Synchronisierungsobjekt geöffnet. Wenn ein Synchronisierungsobjekt im Namespace nicht vorhanden ist oder ein Synchronisierungsobjekt eines anderen Typs im Namespace vorhanden ist, false wird zurückgegeben.

Verwenden Sie einen der Konstruktoren, die Mutex über einen name Parameter verfügen, 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, für die derselbe Wert name verwendet wird, geben nicht unbedingt dasselbe Mutex Objekt zurück, obwohl die zurückgegebenen Objekte denselben benannten Systemmutex darstellen.

Diese Methodenüberladung entspricht dem Aufrufen der TryOpenExisting(String, MutexRights, Mutex) Methodenüberladung und der Angabe MutexRights.Synchronize und MutexRights.Modify Rechte, kombiniert mit dem bitweisen OR-Vorgang. Wenn Sie das MutexRights.Synchronize Kennzeichen angeben, kann ein Thread auf den Mutex warten und das MutexRights.Modify Flag angeben, dass ein Thread die ReleaseMutex Methode aufrufen kann.

Diese Methode fordert keinen Besitz des Mutex an.

Gilt für:

TryOpenExisting(String, MutexRights, Mutex)

Öffnet den angegebenen benannten Mutex, sofern er bereits vorhanden ist, mit dem gewünschten Sicherheitszugriff 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ß-/Kleinschreibung beachtet. Das umgekehrte Schrägstrichzeichen (\) ist reserviert und kann nur verwendet werden, um einen Namespace anzugeben. Weitere Informationen zu Namespaces finden Sie im Abschnitt "Hinweise". Je nach Betriebssystem kann es weitere Einschränkungen für den Namen geben. Bei Unix-basierten Betriebssystemen muss beispielsweise der Name nach Ausschluss des Namespaces ein gültiger Dateiname sein.

rights
MutexRights

Eine bitweise Kombination der Enumerationswerte, die den gewünschten Sicherheitszugriff darstellen.

result
Mutex

Wenn diese Methode zurückgegeben wird, enthält ein Mutex Objekt, das den benannten Mutex darstellt, wenn der Aufruf erfolgreich war oder null wenn der Aufruf fehlgeschlagen ist. Dieser Parameter wird als nicht initialisiert behandelt.

Gibt zurück

truewenn der benannte Mutex erfolgreich geöffnet wurde; andernfalls . false In einigen Fällen false können ungültige Namen zurückgegeben werden.

Attribute

Ausnahmen

name ist eine leere Zeichenfolge.

-oder-

.NET Framework: name ist länger als MAX_PATH (260 Zeichen).

name ist null.

name ist ungültig. Dies kann aus verschiedenen Gründen sein, einschließlich einiger Einschränkungen, die vom Betriebssystem platziert werden können, z. B. ein unbekanntes Präfix oder ungültige Zeichen. Beachten Sie, dass bei namen und allgemeinen Präfixen "Global\" und "Local\" die Groß-/Kleinschreibung beachtet wird. Bei einigen ungültigen Namen kann die Methode stattdessen zurückgegeben werden false .

-oder-

Es gab einen anderen Fehler. Die HResult Eigenschaft kann weitere Informationen bereitstellen.

name ist zu lang. Längenbeschränkungen hängen möglicherweise vom Betriebssystem oder der Konfiguration ab.

Der benannte Mutex ist vorhanden, der Benutzer verfügt jedoch nicht über den sicherheitsrelevanten Zugriff, der für die Verwendung erforderlich ist.

Hinweise

Möglicherweise name wird dem Namespace ein Präfix vorangestellt Global\ oder Local\ angegeben. Wenn der Global Namespace angegeben ist, kann das Synchronisierungsobjekt für alle Prozesse im System freigegeben werden. Wenn der Local Namespace angegeben ist, was auch der Standardwert ist, wenn kein Namespace angegeben wird, kann das Synchronisierungsobjekt für Prozesse in derselben Sitzung freigegeben werden. Bei Windows ist eine Sitzung eine Anmeldesitzung, und Dienste werden in der Regel in einer anderen nicht interaktiven Sitzung ausgeführt. Auf Unix-ähnlichen Betriebssystemen verfügt jede Shell über eine eigene Sitzung. Sitzungslokale Synchronisierungsobjekte können für die Synchronisierung zwischen Prozessen mit einer Beziehung zwischen übergeordnetem/untergeordnetem Element geeignet sein, in der sie alle in derselben Sitzung ausgeführt werden. Weitere Informationen zu Synchronisierungsobjektnamen in Windows finden Sie unter Object Names.

Wenn ein Synchronisierungsobjekt des angeforderten Typs im Namespace vorhanden ist, wird das vorhandene Synchronisierungsobjekt geöffnet. Wenn ein Synchronisierungsobjekt im Namespace nicht vorhanden ist oder ein Synchronisierungsobjekt eines anderen Typs im Namespace vorhanden ist, false wird zurückgegeben.

Verwenden Sie einen der Konstruktoren, die Mutex über einen name Parameter verfügen, 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, für die derselbe Wert name verwendet wird, geben nicht unbedingt dasselbe Mutex Objekt zurück, obwohl die zurückgegebenen Objekte denselben benannten Systemmutex darstellen.

Diese Methode fordert keinen Besitz des Mutex an.

Gilt für: