Semaphore.TryOpenExisting Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Otwiera określony semafor o nazwie , jeśli już istnieje, i zwraca wartość wskazującą, czy operacja zakończyła się pomyślnie.
Przeciążenia
TryOpenExisting(String, Semaphore) |
Otwiera określony semafor o nazwie, jeśli już istnieje, i zwraca wartość wskazującą, czy operacja zakończyła się pomyślnie. |
TryOpenExisting(String, SemaphoreRights, Semaphore) |
Otwiera określony semafor o nazwie, jeśli już istnieje, z żądanym dostępem zabezpieczeń i zwraca wartość wskazującą, czy operacja zakończyła się pomyślnie. |
TryOpenExisting(String, Semaphore)
- Źródło:
- Semaphore.cs
- Źródło:
- Semaphore.cs
- Źródło:
- Semaphore.cs
Otwiera określony semafor o nazwie, 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::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
Parametry
- name
- String
Nazwa obiektu synchronizacji, który ma być współużytkowany z innymi procesami. 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
- Semaphore
Gdy ta metoda zwraca wartość , zawiera Semaphore obiekt reprezentujący nazwany semafor, jeśli wywołanie zakończyło się pomyślnie lub null
jeśli wywołanie nie powiodło się. Ten parametr jest traktowany jako niezainicjowany.
Zwraca
true
jeśli nazwany semafor został pomyślnie otwarty; 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.
Nazwany semafor istnieje, ale użytkownik nie ma dostępu zabezpieczeń wymaganego do jego używania.
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ć semafor systemu, gdy jeszcze nie istnieje, użyj jednego z Semaphore konstruktorów, który ma name
parametr.
Jeśli nie masz pewności, czy istnieje nazwany semafor, użyj tego przeciążenia metody zamiast OpenExisting(String) przeciążenia metody, co zgłasza wyjątek, jeśli semafor nie istnieje.
To przeciążenie metody jest równoważne wywołaniu TryOpenExisting przeciążenia metody i określeniu SemaphoreRights.Synchronize praw i SemaphoreRights.Modify połączeniu za pomocą operacji OR bitowej. Określenie flagi SemaphoreRights.Synchronize umożliwia wątkowi wprowadzanie semafora, a określenie SemaphoreRights.Modify flagi umożliwia wątkowi wywołanie Release metody.
Dotyczy
TryOpenExisting(String, SemaphoreRights, Semaphore)
Otwiera określony semafor o nazwie, 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::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
Parametry
- name
- String
Nazwa obiektu synchronizacji, który ma być współużytkowany z innymi procesami. 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
- SemaphoreRights
Bitowa kombinacja wartości wyliczenia, które reprezentują żądany dostęp zabezpieczeń.
- result
- Semaphore
Gdy ta metoda zwraca wartość , zawiera Semaphore obiekt reprezentujący nazwany semafor, jeśli wywołanie zakończyło się pomyślnie lub null
jeśli wywołanie nie powiodło się. Ten parametr jest traktowany jako niezainicjowany.
Zwraca
true
jeśli nazwany semafor został pomyślnie otwarty; w przeciwnym razie , false
. W niektórych przypadkach false
może zostać zwrócona nieprawidłowa nazwa.
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.
Nazwany semafor istnieje, ale użytkownik nie ma dostępu zabezpieczeń wymaganego do jego używania.
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ć semafor systemu, gdy jeszcze nie istnieje, użyj jednego z Semaphore konstruktorów, który ma name
parametr.
Jeśli nie masz pewności, czy istnieje nazwany semafor, użyj tego przeciążenia metody zamiast OpenExisting(String, SemaphoreRights) przeciążenia metody, co zgłasza wyjątek, jeśli semafor nie istnieje.
Parametr rights
musi zawierać flagę SemaphoreRights.Synchronize , aby umożliwić wątkom wprowadzanie semafora oraz flagę SemaphoreRights.Modify umożliwiającą wątkom wywoływanie Release metody.
Wiele wywołań do tej metody, które używają tej samej wartości, name
niekoniecznie zwracają ten sam Semaphore obiekt, mimo że zwracane obiekty reprezentują ten sam semafor systemowy.
Dotyczy
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla