EventWaitHandle.TryOpenExisting Methode

Definition

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

Überlädt

TryOpenExisting(String, EventWaitHandle)

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

TryOpenExisting(String, EventWaitHandleRights, EventWaitHandle)

Öffnet das angegebene benannte Synchronisierungsereignis, 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, EventWaitHandle)

Quelle:
EventWaitHandle.cs
Quelle:
EventWaitHandle.cs
Quelle:
EventWaitHandle.cs

Öffnet das angegebene benannte Synchronisierungsereignis, 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::EventWaitHandle ^ % result);
[System.Security.SecurityCritical]
public static bool TryOpenExisting (string name, out System.Threading.EventWaitHandle result);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static bool TryOpenExisting (string name, out System.Threading.EventWaitHandle? result);
public static bool TryOpenExisting (string name, out System.Threading.EventWaitHandle result);
public static bool TryOpenExisting (string name, out System.Threading.EventWaitHandle? result);
[<System.Security.SecurityCritical>]
static member TryOpenExisting : string * EventWaitHandle -> bool
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member TryOpenExisting : string * EventWaitHandle -> bool
static member TryOpenExisting : string * EventWaitHandle -> bool
Public Shared Function TryOpenExisting (name As String, ByRef result As EventWaitHandle) As Boolean

Parameter

name
String

Der Name des Synchronisierungsobjekts, das geöffnet und 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
EventWaitHandle

Enthält nach Rückgabe dieser Methode ein EventWaitHandle-Objekt, das das benannte Synchronisierungsereignis darstellt, wenn der Aufruf erfolgreich ausgeführt wurde, oder null, wenn beim Aufruf ein Fehler aufgetreten ist. Dieser Parameter wird nicht initialisiert behandelt.

Gibt zurück

true, wenn das benannte Synchronisierungsereignis 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 Ereignis ist vorhanden, aber der Benutzer verfügt nicht über den erforderlichen Sicherheitszugriff.

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, bei 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 EventWaitHandle Konstruktoren mit einem name Parameter, um das Systemereignis zu erstellen, wenn es noch nicht vorhanden ist.

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

Diese Methodenüberladung entspricht dem Aufrufen der TryOpenExisting(String, EventWaitHandleRights, EventWaitHandle) Methodenüberladung und dem Angeben EventWaitHandleRights.Synchronize von Rechten und EventWaitHandleRights.Modify kombiniert mit der bitweisen OR-Operation. Die Angabe des EventWaitHandleRights.Synchronize Flags ermöglicht es einem Thread, auf das benannte Systemereignis zu warten, und die Angabe des EventWaitHandleRights.Modify Flags ermöglicht es einem Thread, die Set Methoden und Reset aufzurufen.

Mehrere Aufrufe dieser Methode, die denselben Wert für name verwenden, geben nicht notwendigerweise dasselbe EventWaitHandle Objekt zurück, obwohl die zurückgegebenen Objekte das gleiche benannte Systemereignis darstellen.

Gilt für:

TryOpenExisting(String, EventWaitHandleRights, EventWaitHandle)

Öffnet das angegebene benannte Synchronisierungsereignis, 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::EventWaitHandleRights rights, [Runtime::InteropServices::Out] System::Threading::EventWaitHandle ^ % result);
[System.Security.SecurityCritical]
public static bool TryOpenExisting (string name, System.Security.AccessControl.EventWaitHandleRights rights, out System.Threading.EventWaitHandle result);
[<System.Security.SecurityCritical>]
static member TryOpenExisting : string * System.Security.AccessControl.EventWaitHandleRights * EventWaitHandle -> bool
Public Shared Function TryOpenExisting (name As String, rights As EventWaitHandleRights, ByRef result As EventWaitHandle) As Boolean

Parameter

name
String

Der Name des Synchronisierungsobjekts, das geöffnet und 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
EventWaitHandleRights

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

result
EventWaitHandle

Enthält nach Rückgabe dieser Methode ein EventWaitHandle-Objekt, das das benannte Synchronisierungsereignis darstellt, wenn der Aufruf erfolgreich ausgeführt wurde, oder null, wenn beim Aufruf ein Fehler aufgetreten ist. Dieser Parameter wird nicht initialisiert behandelt.

Gibt zurück

true, wenn das benannte Synchronisierungsereignis 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 Ereignis ist vorhanden, aber der Benutzer verfügt nicht über den erforderlichen Sicherheitszugriff.

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, bei 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 EventWaitHandle Konstruktoren mit einem name Parameter, um das Systemereignis zu erstellen, wenn es noch nicht vorhanden ist.

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

Der rights Parameter muss das EventWaitHandleRights.Synchronize Flag enthalten, damit Threads auf das Ereignis warten können, und das EventWaitHandleRights.Modify Flag, damit Threads die Set Methoden und Reset aufrufen können.

Mehrere Aufrufe dieser Methode, die denselben Wert für name verwenden, geben nicht notwendigerweise dasselbe EventWaitHandle Objekt zurück, obwohl die zurückgegebenen Objekte das gleiche benannte Systemereignis darstellen.

Gilt für: