Share via


Mutex.TryOpenExisting Metoda

Definice

Otevře zadaný s názvem mutex, pokud už existuje, a vrátí hodnotu, která označuje, jestli operace proběhla úspěšně.

Přetížení

TryOpenExisting(String, Mutex)

Otevře zadaný s názvem mutex, pokud již existuje, a vrátí hodnotu, která označuje, zda byla operace úspěšná.

TryOpenExisting(String, MutexRights, Mutex)

Otevře zadaný pojmenovaný mutex, pokud už existuje, s požadovaným přístupem zabezpečení a vrátí hodnotu, která označuje, jestli operace proběhla úspěšně.

TryOpenExisting(String, Mutex)

Zdroj:
Mutex.cs
Zdroj:
Mutex.cs
Zdroj:
Mutex.cs

Otevře zadaný s názvem mutex, pokud již existuje, a vrátí hodnotu, která označuje, zda byla operace úspěšná.

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

Název synchronizačního objektu, který se má sdílet s jinými procesy. V názvu se rozlišují velká a malá písmena. Znak zpětného lomítka (\) je vyhrazený a lze ho použít pouze k určení oboru názvů. Další informace o oborech názvů najdete v části poznámky. V závislosti na operačním systému můžou existovat další omezení názvu. Například v unixových operačních systémech musí být název po vyloučení oboru názvů platný název souboru.

result
Mutex

Když tato metoda vrátí, obsahuje Mutex objekt, který představuje pojmenovaný mutex, pokud volání bylo úspěšné, nebo null pokud volání selhalo. Tento parametr je považován za neinicializovaný.

Návraty

truepokud byl pojmenovaný mutex úspěšně otevřen; v opačném případě . false V některých případech false může být vrácena kvůli neplatným názvům.

Atributy

Výjimky

name je prázdný řetězec.

-nebo-

Pouze rozhraní .NET Framework: name je delší než MAX_PATH (260 znaků).

name je null.

Formát name je neplatný. Může to být z různých důvodů, včetně některých omezení, která může operační systém použít, například kvůli neznámé předponě nebo neplatným znakům. Všimněte si, že názvy a běžné předpony Global a Local rozlišují malá a velká písmena. U některých neplatných názvů může metoda místo toho vrátit false .

-nebo-

Došlo k jiné chybě. Vlastnost HResult může poskytnout další informace.

Je name příliš dlouhý. Omezení délky může záviset na operačním systému nebo konfiguraci.

Pojmenovaný mutex existuje, ale uživatel nemá přístup zabezpečení potřebný k jeho použití.

Poznámky

K name zadání oboru názvů může mít předponu Global\ nebo Local\ . Global Pokud je obor názvů zadaný, synchronizační objekt může být sdílen se všemi procesy v systému. Local Pokud je zadán obor názvů, což je také výchozí, pokud není zadán žádný obor názvů, synchronizační objekt může být sdílen s procesy ve stejné relaci. Ve Windows je relace přihlášení a služby obvykle běží v jiné neinteraktivní relaci. V unixových operačních systémech má každé prostředí svoji vlastní relaci. Objekty místní synchronizace relace mohou být vhodné pro synchronizaci mezi procesy se vztahem nadřazenosti a podřízenosti, kde se všechny spouští ve stejné relaci. Další informace o názvech synchronizačních objektů ve Windows najdete v tématu Názvy objektů.

Pokud v oboru názvů existuje objekt synchronizace požadovaného typu, otevře se existující synchronizační objekt. Pokud synchronizační objekt v oboru názvů neexistuje nebo v oboru názvů existuje objekt synchronizace jiného typu, false vrátí se.

Chcete-li vytvořit mutex systému, pokud ještě neexistuje, použijte jeden z Mutex konstruktorů, který má name parametr.

Pokud si nejste jisti, zda pojmenovaný mutex existuje, použijte toto přetížení metody místo OpenExisting(String) přetížení metody, které vyvolá výjimku, pokud mutex neexistuje.

Více volání této metody, která používají stejnou hodnotu pro name , nemusí nutně vrátit stejný Mutex objekt, i když vrácené objekty představují stejný pojmenovaný system mutex.

Toto přetížení metody je ekvivalentní volání TryOpenExisting(String, MutexRights, Mutex) přetížení metody a určení MutexRights.SynchronizeMutexRights.Modify a práva, zkombinované pomocí bitové operace OR. Zadáním příznaku MutexRights.Synchronize umožníte vláknu čekat na mutex a zadáním příznaku MutexRights.Modify umožníte vláknu volat metodu ReleaseMutex .

Tato metoda nevyžaduje vlastnictví mutexu.

Platí pro

TryOpenExisting(String, MutexRights, Mutex)

Otevře zadaný pojmenovaný mutex, pokud už existuje, s požadovaným přístupem zabezpečení a vrátí hodnotu, která označuje, jestli operace proběhla úspěšně.

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

Název synchronizačního objektu, který se má sdílet s jinými procesy. V názvu se rozlišují velká a malá písmena. Znak zpětného lomítka (\) je vyhrazený a lze ho použít pouze k určení oboru názvů. Další informace o oborech názvů najdete v části poznámky. V závislosti na operačním systému můžou existovat další omezení názvu. Například v unixových operačních systémech musí být název po vyloučení oboru názvů platný název souboru.

rights
MutexRights

Bitové kombinace hodnot výčtu, které představují požadovaný přístup zabezpečení.

result
Mutex

Když tato metoda vrátí, obsahuje Mutex objekt, který představuje pojmenovaný mutex, pokud volání bylo úspěšné, nebo null pokud volání selhalo. Tento parametr je považován za neinicializovaný.

Návraty

truepokud byl pojmenovaný mutex úspěšně otevřen; v opačném případě . false V některých případech false může být vrácena kvůli neplatným názvům.

Atributy

Výjimky

name je prázdný řetězec.

-nebo-

Pouze rozhraní .NET Framework: name je delší než MAX_PATH (260 znaků).

name je null.

Formát name je neplatný. Může to být z různých důvodů, včetně některých omezení, která může operační systém použít, například kvůli neznámé předponě nebo neplatným znakům. Všimněte si, že názvy a běžné předpony Global a Local rozlišují malá a velká písmena. U některých neplatných názvů může metoda místo toho vrátit false .

-nebo-

Došlo k jiné chybě. Vlastnost HResult může poskytnout další informace.

Je name příliš dlouhý. Omezení délky může záviset na operačním systému nebo konfiguraci.

Pojmenovaný mutex existuje, ale uživatel nemá přístup zabezpečení potřebný k jeho použití.

Poznámky

K name zadání oboru názvů může mít předponu Global\ nebo Local\ . Global Pokud je obor názvů zadaný, synchronizační objekt může být sdílen se všemi procesy v systému. Local Pokud je zadán obor názvů, což je také výchozí, pokud není zadán žádný obor názvů, synchronizační objekt může být sdílen s procesy ve stejné relaci. Ve Windows je relace přihlášení a služby obvykle běží v jiné neinteraktivní relaci. V unixových operačních systémech má každé prostředí svoji vlastní relaci. Objekty místní synchronizace relace mohou být vhodné pro synchronizaci mezi procesy se vztahem nadřazenosti a podřízenosti, kde se všechny spouští ve stejné relaci. Další informace o názvech synchronizačních objektů ve Windows najdete v tématu Názvy objektů.

Pokud v oboru názvů existuje objekt synchronizace požadovaného typu, otevře se existující synchronizační objekt. Pokud synchronizační objekt v oboru názvů neexistuje nebo v oboru názvů existuje objekt synchronizace jiného typu, false vrátí se.

Chcete-li vytvořit mutex systému, pokud ještě neexistuje, použijte jeden z Mutex konstruktorů, který má name parametr.

Pokud si nejste jisti, zda pojmenovaný mutex existuje, použijte toto přetížení metody místo OpenExisting(String, MutexRights) přetížení metody, které vyvolá výjimku, pokud mutex neexistuje.

Parametr rights musí obsahovat MutexRights.Synchronize příznak, aby vlákna mohla čekat na mutex, a MutexRights.Modify příznak umožňující vlákna volat metodu ReleaseMutex .

Více volání této metody, která používají stejnou hodnotu pro name , nemusí nutně vrátit stejný Mutex objekt, i když vrácené objekty představují stejný pojmenovaný system mutex.

Tato metoda nevyžaduje vlastnictví mutexu.

Platí pro