Udostępnij za pośrednictwem


Mutex.TryOpenExisting Metoda

Definicja

Otwiera określony nazwany mutex, jeśli już istnieje i zwraca wartość wskazującą, czy operacja zakończyła się pomyślnie.

Przeciążenia

TryOpenExisting(String, Mutex)

Otwiera określony nazwany mutex, jeśli już istnieje, i zwraca wartość wskazującą, czy operacja zakończyła się pomyślnie.

TryOpenExisting(String, MutexRights, Mutex)

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

TryOpenExisting(String, Mutex)

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

Otwiera określony nazwany mutex, 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::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);
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

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 służyć 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 wykluczeniu przestrzeni nazw musi być prawidłową nazwą pliku.

result
Mutex

Gdy ta metoda zostanie zwrócona, zawiera Mutex obiekt reprezentujący nazwany mutex, 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 mutex 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 program .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 nazwy i typowe prefiksy "Global\" i "Local\" są uwzględniane wielkość liter. W przypadku niektórych nieprawidłowych nazw metoda może zamiast tego zwrócić false .

-lub-

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

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

Nazwany mutex istnieje, ale użytkownik nie ma wymaganego dostępu do zabezpieczeń, aby go używać.

Uwagi

Element name może być poprzedzony prefiksem Global\ lub Local\ w celu określenia przestrzeni 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ż domyślna, 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 podobnych do systemu Unix każda powłoka ma własną sesję. Obiekty synchronizacji lokalnej sesji mogą być odpowiednie do synchronizowania procesów 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 zostanie zwrócony.

Aby utworzyć system mutex, gdy jeszcze nie istnieje, użyj jednego z Mutex konstruktorów, który ma name parametr.

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

Wiele wywołań do tej metody, które używają tej samej wartości, name niekoniecznie zwracają ten sam obiekt, mimo że zwracane obiekty reprezentują tę samą Mutex nazwę systemowego mutexu.

To przeciążenie metody jest równoważne wywołaniu przeciążenia metody i określaniu TryOpenExisting(String, MutexRights, Mutex)MutexRights.Synchronize praw MutexRights.Modify połączonych przy użyciu operacji OR bitowej. Określenie flagi MutexRights.Synchronize umożliwia wątkowi oczekiwanie na mutex i określenie MutexRights.Modify flagi umożliwia wątkowi wywołanie ReleaseMutex metody.

Ta metoda nie żąda własności mutexu.

Dotyczy

TryOpenExisting(String, MutexRights, Mutex)

Otwiera określony nazwany mutex, 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::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

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 służyć 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 wykluczeniu przestrzeni nazw musi być prawidłową nazwą pliku.

rights
MutexRights

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

result
Mutex

Gdy ta metoda zostanie zwrócona, zawiera Mutex obiekt reprezentujący nazwany mutex, 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 mutex 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 program .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 nazwy i typowe prefiksy "Global\" i "Local\" są uwzględniane wielkość liter. W przypadku niektórych nieprawidłowych nazw metoda może zamiast tego zwrócić false .

-lub-

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

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

Nazwany mutex istnieje, ale użytkownik nie ma wymaganego dostępu do zabezpieczeń, aby go używać.

Uwagi

Element name może być poprzedzony prefiksem Global\ lub Local\ w celu określenia przestrzeni 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ż domyślna, 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 podobnych do systemu Unix każda powłoka ma własną sesję. Obiekty synchronizacji lokalnej sesji mogą być odpowiednie do synchronizowania procesów 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 zostanie zwrócony.

Aby utworzyć system mutex, gdy jeszcze nie istnieje, użyj jednego z Mutex konstruktorów, który ma name parametr.

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

Parametr rights musi zawierać flagę MutexRights.Synchronize , aby umożliwić wątkom oczekiwanie na mutex, a flaga MutexRights.Modify zezwala na wywołanie ReleaseMutex metody przez wątki.

Wiele wywołań do tej metody, które używają tej samej wartości, name niekoniecznie zwracają ten sam obiekt, mimo że zwracane obiekty reprezentują tę samą Mutex nazwę systemowego mutexu.

Ta metoda nie żąda własności mutexu.

Dotyczy