Mutex.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 nazwany mutex, jeśli już istnieje i zwraca wartość wskazującą, czy operacja zakończyła się pomyślnie.
Przeciążenia
| Nazwa | Opis |
|---|---|
| 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, NamedWaitHandleOptions, Mutex) |
Otwiera określony nazwany mutex, jeśli już istnieje i zwraca wartość wskazującą, czy operacja zakończyła się pomyślnie. Jeśli opcje są ustawione tylko dla bieżącego użytkownika, kontrole dostępu obiektu są weryfikowane dla użytkownika wywołującego. |
TryOpenExisting(String, Mutex)
- Źródło:
- Mutex.cs
- Źródło:
- Mutex.cs
- Ź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 rozróżniane są wielkie i małe litery. 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 zwraca, 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 .NET Framework: name jest dłuższy niż MAX_PATH (260 znaków).
Parametr name ma wartość null.
name jest nieprawidłowy. Może to być z różnych powodów, w tym niektóre ograniczenia, które mogą zostać umieszczone przez system operacyjny, takie jak nieznany prefiks lub nieprawidłowe znaki. Należy pamiętać, że w nazwach i typowych prefiksach "Global\" i "Local\" uwzględniana jest 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.
Element name jest za długi. Ograniczenia długości mogą zależeć od systemu operacyjnego lub konfiguracji.
Nazwany mutex istnieje, ale użytkownik nie ma dostępu zabezpieczeń wymaganego do jego użycia.
Uwagi
Element name może być poprzedzony prefiksem Global\ lub Local\ , aby określić 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 żadnej przestrzeni nazw, obiekt synchronizacji może być współużytkowany z procesami w tej samej sesji. W Windows sesja jest sesją logowania, a usługi są zwykle uruchamiane w innej sesji nieinterakcyjnej. W systemach operacyjnych podobnych do 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 Windows, zobacz Object Names.
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ć 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ń tej metody, które używają tej samej wartości, name niekoniecznie zwracają ten sam Mutex obiekt, mimo że zwracane obiekty reprezentują ten sam nazwany mutex systemu.
To przeciążenie metody jest równoważne wywołaniu przeciążenia metody i określaniu TryOpenExisting(String, MutexRights, Mutex)MutexRights.Synchronize i MutexRights.Modify praw połączonych przy użyciu operacji bitowej OR. Określenie flagi MutexRights.Synchronize umożliwia wątkowi oczekiwanie na mutex i określenie MutexRights.Modify flagi zezwala wątkowi na 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 rozróżniane są wielkie i małe litery. 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 zwraca, 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 .NET Framework: name jest dłuższy niż MAX_PATH (260 znaków).
Parametr name ma wartość null.
name jest nieprawidłowy. Może to być z różnych powodów, w tym niektóre ograniczenia, które mogą zostać umieszczone przez system operacyjny, takie jak nieznany prefiks lub nieprawidłowe znaki. Należy pamiętać, że w nazwach i typowych prefiksach "Global\" i "Local\" uwzględniana jest 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.
Element name jest za długi. Ograniczenia długości mogą zależeć od systemu operacyjnego lub konfiguracji.
Nazwany mutex istnieje, ale użytkownik nie ma dostępu zabezpieczeń wymaganego do jego użycia.
Uwagi
Element name może być poprzedzony prefiksem Global\ lub Local\ , aby określić 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 żadnej przestrzeni nazw, obiekt synchronizacji może być współużytkowany z procesami w tej samej sesji. W Windows sesja jest sesją logowania, a usługi są zwykle uruchamiane w innej sesji nieinterakcyjnej. W systemach operacyjnych podobnych do 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 Windows, zobacz Object Names.
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ć 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 oraz flagę MutexRights.Modify zezwalaną wątkom na wywoływanie ReleaseMutex metody.
Wiele wywołań tej metody, które używają tej samej wartości, name niekoniecznie zwracają ten sam Mutex obiekt, mimo że zwracane obiekty reprezentują ten sam nazwany mutex systemu.
Ta metoda nie żąda własności mutexu.
Dotyczy
TryOpenExisting(String, NamedWaitHandleOptions, Mutex)
- Ź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. Jeśli opcje są ustawione tylko dla bieżącego użytkownika, kontrole dostępu obiektu są weryfikowane dla użytkownika wywołującego.
public:
static bool TryOpenExisting(System::String ^ name, System::Threading::NamedWaitHandleOptions options, [Runtime::InteropServices::Out] System::Threading::Mutex ^ % result);
public static bool TryOpenExisting(string name, System.Threading.NamedWaitHandleOptions options, out System.Threading.Mutex? result);
static member TryOpenExisting : string * System.Threading.NamedWaitHandleOptions * Mutex -> bool
Public Shared Function TryOpenExisting (name As String, options As NamedWaitHandleOptions, ByRef result As Mutex) As Boolean
Parametry
- name
- String
Nazwa obiektu synchronizacji, który ma być współużytkowany z innymi procesami. W nazwie rozróżniane są wielkie i małe litery.
- options
- NamedWaitHandleOptions
Opcje zakresu nazwanego mutexu systemowego. Domyślnie dostęp ograniczony do bieżącego użytkownika i bieżącej sesji. Określone opcje mogą mieć wpływ na przestrzeń nazw nazwy i dostęp do bazowego obiektu mutex systemu.
- result
- Mutex
Gdy ta metoda zwraca, 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.
Wyjątki
name jest pustym ciągiem.
Parametr name ma wartość null.
name jest nieprawidłowy. Może to być z różnych powodów, w tym niektóre ograniczenia, które mogą zostać umieszczone przez system operacyjny, takie jak nieznany prefiks lub nieprawidłowe znaki. Należy pamiętać, że w nazwach i typowych prefiksach "Global\" i "Local\" uwzględniana jest 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.
Element name jest za długi. Ograniczenia długości mogą zależeć od systemu operacyjnego lub konfiguracji.
Nazwany mutex istnieje, ale użytkownik nie ma dostępu zabezpieczeń wymaganego do jego użycia.
Uwagi
Jeśli obiekt synchronizacji żądanego typu istnieje w przestrzeni nazw, istniejący obiekt synchronizacji zostanie otwarty. Jeśli options jednak określa dostęp ograniczony do bieżącego użytkownika, a obiekt synchronizacji nie jest z nim zgodny, false jest zwracany. Jeśli obiekt synchronizacji nie istnieje w przestrzeni nazw lub obiekt synchronizacji innego typu istnieje w przestrzeni nazw, false jest również zwracany.
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ń tej metody, które używają tej samej wartości, name niekoniecznie zwracają ten sam Mutex obiekt, mimo że zwracane obiekty reprezentują ten sam nazwany mutex systemu.
Ta metoda nie żąda własności mutexu.