EventWaitHandle.TryOpenExisting Metoda

Definicja

Otwiera określone nazwane zdarzenie synchronizacji, jeśli już istnieje i zwraca wartość wskazującą, czy operacja zakończyła się pomyślnie.

Przeciążenia

TryOpenExisting(String, EventWaitHandle)

Otwiera określone nazwane zdarzenie synchronizacji, jeśli już istnieje i zwraca wartość wskazującą, czy operacja zakończyła się pomyślnie.

TryOpenExisting(String, EventWaitHandleRights, EventWaitHandle)

Otwiera określone nazwane zdarzenie synchronizacji, jeśli już istnieje, z żądanym dostępem zabezpieczeń i zwraca wartość wskazującą, czy operacja zakończyła się pomyślnie.

TryOpenExisting(String, EventWaitHandle)

Źródło:
EventWaitHandle.cs
Źródło:
EventWaitHandle.cs
Źródło:
EventWaitHandle.cs

Otwiera określone nazwane zdarzenie synchronizacji, jeśli już istnieje i zwraca wartość wskazującą, czy operacja zakończyła się pomyślnie.

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

Parametry

name
String

Nazwa obiektu synchronizacji, który ma zostać otwarty i udostępniony innym procesom. W nazwie jest rozróżniana wielkość liter. Znak ukośnika odwrotnego (\) jest zarezerwowany i może być używany tylko do określania przestrzeni nazw. Aby uzyskać więcej informacji na temat przestrzeni nazw, zobacz sekcję uwagi. W zależności od systemu operacyjnego mogą istnieć dalsze ograniczenia dotyczące nazwy. Na przykład w systemach operacyjnych opartych na systemie Unix nazwa po wyłączeniu przestrzeni nazw musi być prawidłową nazwą pliku.

result
EventWaitHandle

Gdy ta metoda zwraca, zawiera EventWaitHandle obiekt reprezentujący nazwane zdarzenie synchronizacji, jeśli wywołanie powiodło się lub null jeśli wywołanie nie powiodło się. Ten parametr jest traktowany jako niezainicjowany.

Zwraca

true jeśli nazwane zdarzenie synchronizacji zostało pomyślnie otwarte; w przeciwnym razie , false. W niektórych przypadkach false może zostać zwrócona nieprawidłowa nazwa.

Atrybuty

Wyjątki

name jest pustym ciągiem.

-lub-

tylko .NET Framework: name jest dłuższy niż MAX_PATH (260 znaków).

name to null.

Nazwa name jest niepoprawna. Może to być z różnych powodów, w tym niektóre ograniczenia, które mogą zostać wprowadzone przez system operacyjny, takie jak nieznany prefiks lub nieprawidłowe znaki. Należy pamiętać, że w nazwach i typowych prefiksach "Global\" i "Local\" jest rozróżniana wielkość liter. W przypadku niektórych nieprawidłowych nazw metoda może zamiast tego zwrócić false wartość .

-lub-

Wystąpił inny błąd. Właściwość HResult może zawierać więcej informacji.

Wartość name jest za długa. Ograniczenia długości mogą zależeć od systemu operacyjnego lub konfiguracji.

Nazwane zdarzenie istnieje, ale użytkownik nie ma żądanego dostępu zabezpieczeń.

Uwagi

Element name może mieć prefiks Global\ lub Local\ określać przestrzeń nazw. Po określeniu Global przestrzeni nazw obiekt synchronizacji może być współużytkowany z dowolnymi procesami w systemie. Po określeniu Local przestrzeni nazw, która jest również wartością domyślną, gdy nie określono przestrzeni nazw, obiekt synchronizacji może być współużytkowany z procesami w tej samej sesji. W systemie Windows sesja jest sesją logowania, a usługi są zwykle uruchamiane w innej sesji nieinterakcyjnej. W systemach operacyjnych przypominających system Unix każda powłoka ma własną sesję. Obiekty synchronizacji lokalnej sesji mogą być odpowiednie do synchronizacji między procesami z relacją nadrzędną/podrzędną, w której wszystkie są uruchamiane w tej samej sesji. Aby uzyskać więcej informacji na temat nazw obiektów synchronizacji w systemie Windows, zobacz Nazwy obiektów.

Jeśli obiekt synchronizacji żądanego typu istnieje w przestrzeni nazw, istniejący obiekt synchronizacji zostanie otwarty. Jeśli obiekt synchronizacji nie istnieje w przestrzeni nazw lub obiekt synchronizacji innego typu istnieje w przestrzeni nazw, false jest zwracany.

Aby utworzyć zdarzenie systemowe, gdy jeszcze nie istnieje, użyj jednego z EventWaitHandle konstruktorów, który ma name parametr.

Jeśli nie masz pewności, czy istnieje nazwane zdarzenie synchronizacji, użyj tego przeciążenia metody zamiast OpenExisting(String) przeciążenia metody, co zgłasza wyjątek, jeśli zdarzenie synchronizacji nie istnieje.

To przeciążenie metody jest równoważne wywołaniu TryOpenExisting(String, EventWaitHandleRights, EventWaitHandle) przeciążenia metody i określeniu EventWaitHandleRights.Synchronize praw i EventWaitHandleRights.Modify połączeniu za pomocą operacji OR bitowej. Określenie flagi EventWaitHandleRights.Synchronize umożliwia wątkowi oczekiwanie na nazwane zdarzenie systemowe i określenie EventWaitHandleRights.Modify flagi umożliwia wątkowi wywoływanie Set metod i Reset .

Wiele wywołań do tej metody, które używają tej samej wartości, name niekoniecznie zwracają ten sam EventWaitHandle obiekt, mimo że zwracane obiekty reprezentują to samo nazwane zdarzenie systemowe.

Dotyczy

TryOpenExisting(String, EventWaitHandleRights, EventWaitHandle)

Otwiera określone nazwane zdarzenie synchronizacji, jeśli już istnieje, z żądanym dostępem zabezpieczeń i zwraca wartość wskazującą, czy operacja zakończyła się pomyślnie.

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

Parametry

name
String

Nazwa obiektu synchronizacji, który ma zostać otwarty i udostępniony innym procesom. W nazwie jest rozróżniana wielkość liter. Znak ukośnika odwrotnego (\) jest zarezerwowany i może być używany tylko do określania przestrzeni nazw. Aby uzyskać więcej informacji na temat przestrzeni nazw, zobacz sekcję uwagi. W zależności od systemu operacyjnego mogą istnieć dalsze ograniczenia dotyczące nazwy. Na przykład w systemach operacyjnych opartych na systemie Unix nazwa po wyłączeniu przestrzeni nazw musi być prawidłową nazwą pliku.

rights
EventWaitHandleRights

Bitowa kombinacja wartości wyliczenia, które reprezentują żądany dostęp zabezpieczeń.

result
EventWaitHandle

Gdy ta metoda zwraca, zawiera EventWaitHandle obiekt reprezentujący nazwane zdarzenie synchronizacji, jeśli wywołanie powiodło się lub null jeśli wywołanie nie powiodło się. Ten parametr jest traktowany jako niezainicjowany.

Zwraca

true jeśli nazwane zdarzenie synchronizacji zostało pomyślnie otwarte; w przeciwnym razie , false. W niektórych przypadkach false może zostać zwrócona nieprawidłowa nazwa.

Atrybuty

Wyjątki

name jest pustym ciągiem.

-lub-

tylko .NET Framework: name jest dłuższy niż MAX_PATH (260 znaków).

name to null.

Nazwa name jest niepoprawna. Może to być z różnych powodów, w tym niektóre ograniczenia, które mogą zostać wprowadzone przez system operacyjny, takie jak nieznany prefiks lub nieprawidłowe znaki. Należy pamiętać, że w nazwach i typowych prefiksach "Global\" i "Local\" jest rozróżniana wielkość liter. W przypadku niektórych nieprawidłowych nazw metoda może zamiast tego zwrócić false wartość .

-lub-

Wystąpił inny błąd. Właściwość HResult może zawierać więcej informacji.

Wartość name jest za długa. Ograniczenia długości mogą zależeć od systemu operacyjnego lub konfiguracji.

Nazwane zdarzenie istnieje, ale użytkownik nie ma żądanego dostępu zabezpieczeń.

Uwagi

Element name może mieć prefiks Global\ lub Local\ określać przestrzeń nazw. Po określeniu Global przestrzeni nazw obiekt synchronizacji może być współużytkowany z dowolnymi procesami w systemie. Po określeniu Local przestrzeni nazw, która jest również wartością domyślną, gdy nie określono przestrzeni nazw, obiekt synchronizacji może być współużytkowany z procesami w tej samej sesji. W systemie Windows sesja jest sesją logowania, a usługi są zwykle uruchamiane w innej sesji nieinterakcyjnej. W systemach operacyjnych przypominających system Unix każda powłoka ma własną sesję. Obiekty synchronizacji lokalnej sesji mogą być odpowiednie do synchronizacji między procesami z relacją nadrzędną/podrzędną, w której wszystkie są uruchamiane w tej samej sesji. Aby uzyskać więcej informacji na temat nazw obiektów synchronizacji w systemie Windows, zobacz Nazwy obiektów.

Jeśli obiekt synchronizacji żądanego typu istnieje w przestrzeni nazw, istniejący obiekt synchronizacji zostanie otwarty. Jeśli obiekt synchronizacji nie istnieje w przestrzeni nazw lub obiekt synchronizacji innego typu istnieje w przestrzeni nazw, false jest zwracany.

Aby utworzyć zdarzenie systemowe, gdy jeszcze nie istnieje, użyj jednego z EventWaitHandle konstruktorów, który ma name parametr.

Jeśli nie masz pewności, czy istnieje nazwane zdarzenie synchronizacji, użyj tego przeciążenia metody zamiast OpenExisting(String, EventWaitHandleRights) przeciążenia metody, co zgłasza wyjątek, jeśli zdarzenie synchronizacji nie istnieje.

Parametr rights musi zawierać flagę EventWaitHandleRights.Synchronize , aby umożliwić wątkom oczekiwanie na zdarzenie oraz flagę EventWaitHandleRights.Modify zezwalania wątkom na wywoływanie Set metod i Reset .

Wiele wywołań do tej metody, które używają tej samej wartości, name niekoniecznie zwracają ten sam EventWaitHandle obiekt, mimo że zwracane obiekty reprezentują to samo nazwane zdarzenie systemowe.

Dotyczy