Semaphore.TryOpenExisting Methode

Definition

Öffnet ein angegebenes benanntes Semaphor, wenn es bereits vorhanden ist, und gibt einen Wert zurück, der angibt, ob der Vorgang erfolgreich war.

Überlädt

TryOpenExisting(String, Semaphore)

Öffnet das angegebene benannte Semaphor, wenn es bereits vorhanden ist, und gibt einen Wert zurück, der angibt, ob der Vorgang erfolgreich war.

TryOpenExisting(String, SemaphoreRights, Semaphore)

Öffnet das angegebene benannte Semaphor, wenn es bereits mit dem gewünschten Sicherheitszugriff vorhanden ist und gibt einen Wert zurück, der angibt, ob der Vorgang erfolgreich war.

TryOpenExisting(String, Semaphore)

Öffnet das angegebene benannte Semaphor, wenn es 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::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

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.

result
Semaphore

Enthält nach Beenden der Methode ein Semaphore-Objekt, das das benannte Semaphor darstellt, wenn der Aufruf erfolgreich ausgeführt wurde, oder null, wenn der Aufruf fehlgeschlagen ist. Dieser Parameter wird nicht initialisiert behandelt.

Gibt zurück

Boolean

true, wenn das benannte Semaphor 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 für den Namen und die allgemeinen Präfixe "Global" und "Local" Groß-/Kleinschreibung beachtet wird. Bei einigen ungültigen Namen gibt die Methode möglicherweise stattdessen false zurück.

- oder -

Es gab einen anderen Fehler. 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.

Der benannte Semaphor ist vorhanden, aber der Benutzer verfügt nicht über den Sicherheitszugriff, der für die Verwendung erforderlich ist.

Hinweise

Dies name kann mit Global\ oder Local\ zum Angeben eines Namespaces präfixiert werden. Wenn der Namespace angegeben wird, kann das Global 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, wird das Synchronisierungsobjekt möglicherweise mit Prozessen in derselben Sitzung freigegeben. Auf 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. Sitzungs-lokale Synchronisierungsobjekte können für die Synchronisierung zwischen Prozessen mit einer übergeordneten/untergeordneten Beziehung geeignet sein, in der sie alle in derselben Sitzung ausgeführt werden. Weitere Informationen zu Synchronisierungsobjektnamen auf Windows finden Sie unter Objektnamen.

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 Semaphore Konstruktoren, die über einen name Parameter verfügen, um das Systemsemaphor zu erstellen, wenn es noch nicht vorhanden ist.

Wenn Sie unsicher sind, ob ein benannter Semaphor vorhanden ist, verwenden Sie diese Methodenüberladung anstelle der OpenExisting(String) Methodenüberladung, die eine Ausnahme auslöst, wenn das Semaphor nicht vorhanden ist.

Diese Methodenüberladung entspricht dem Aufrufen der TryOpenExisting Methodenüberladung und der Angabe SemaphoreRights.Synchronize und SemaphoreRights.Modify Rechte, kombiniert mit dem bitweisen OR-Vorgang. Das Angeben des SemaphoreRights.Synchronize Flags ermöglicht es einem Thread, den Semaphor einzugeben, und durch Angeben des SemaphoreRights.Modify Flags kann ein Thread die Release Methode aufrufen.

Gilt für

TryOpenExisting(String, SemaphoreRights, Semaphore)

Öffnet das angegebene benannte Semaphor, wenn es 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::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

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.

rights
SemaphoreRights

Eine bitweise Kombination von Enumerationswerten, die die gewünschten Sicherheitszugriffsrechte darstellen.

result
Semaphore

Enthält nach Beenden der Methode ein Semaphore-Objekt, das das benannte Semaphor darstellt, wenn der Aufruf erfolgreich ausgeführt wurde, oder null, wenn der Aufruf fehlgeschlagen ist. Dieser Parameter wird nicht initialisiert behandelt.

Gibt zurück

Boolean

true, wenn das benannte Semaphor erfolgreich geöffnet wurde; andernfalls false. In einigen Fällen kann false für ungültige Namen zurückgegeben werden.

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 für den Namen und die allgemeinen Präfixe "Global" und "Local" Groß-/Kleinschreibung beachtet wird. Bei einigen ungültigen Namen gibt die Methode möglicherweise stattdessen false zurück.

- oder -

Es gab einen anderen Fehler. 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.

Der benannte Semaphor ist vorhanden, aber der Benutzer verfügt nicht über den Sicherheitszugriff, der für die Verwendung erforderlich ist.

Hinweise

Das name Präfix kann mit Global\ oder Local\ zum Angeben eines Namespaces angegeben werden. Wenn der Global Namespace angegeben wird, kann das Synchronisierungsobjekt für alle Prozesse im System freigegeben werden. Wenn der Namespace angegeben wird, was auch der Local 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. Sitzungs-lokale Synchronisierungsobjekte eignen sich möglicherweise für die Synchronisierung zwischen Prozessen mit einer übergeordneten/untergeordneten Beziehung, bei der alle in derselben Sitzung ausgeführt werden. Weitere Informationen zu Synchronisierungsobjektnamen für Windows finden Sie unter Objektnamen.

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 Semaphore Konstruktoren, die über einen name Parameter verfügen, um das Systemsemaphor zu erstellen, wenn es noch nicht vorhanden ist.

Wenn Sie unsicher sind, ob ein benannter Semaphor vorhanden ist, verwenden Sie diese Methodenüberladung anstelle der OpenExisting(String, SemaphoreRights) Methodenüberladung, die eine Ausnahme auslöst, wenn das Semaphor nicht vorhanden ist.

Der rights Parameter muss das SemaphoreRights.Synchronize Flag enthalten, um Threads die Eingabe des Semaphors zu ermöglichen, und das SemaphoreRights.Modify Flag, damit Threads die Release Methode aufrufen können.

Mehrere Aufrufe dieser Methode, die denselben Wert name verwenden, geben nicht unbedingt dasselbe Semaphore Objekt zurück, obwohl die zurückgegebenen Objekte denselben benannten Systemsemaphor darstellen.

Gilt für