Semaphore.TryOpenExisting Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Otevře zadaný pojmenovaný semafor, pokud již existuje, a vrátí hodnotu, která označuje, zda operace proběhla úspěšně.
Přetížení
TryOpenExisting(String, Semaphore) |
Otevře zadaný pojmenovaný semafor, pokud již existuje, a vrátí hodnotu, která označuje, zda operace proběhla úspěšně. |
TryOpenExisting(String, SemaphoreRights, Semaphore) |
Otevře zadaný pojmenovaný semafor, pokud již existuje, s požadovaným přístupem zabezpečení a vrátí hodnotu, která označuje, zda operace proběhla úspěšně. |
TryOpenExisting(String, Semaphore)
- Zdroj:
- Semaphore.cs
- Zdroj:
- Semaphore.cs
- Zdroj:
- Semaphore.cs
Otevře zadaný pojmenovaný semafor, pokud již existuje, a vrátí hodnotu, která označuje, zda operace proběhla úspěšně.
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
Název objektu synchronizace, 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 s poznámkami. V závislosti na operačním systému můžou existovat další omezení pro název. Například v operačních systémech se systémem Unix musí být název po vyloučení oboru názvů platný název souboru.
- result
- Semaphore
Když tato metoda vrátí, obsahuje Semaphore objekt, který představuje pojmenovaný semafor, pokud volání bylo úspěšné, nebo null
pokud volání selhalo. Tento parametr je považován za neinicializovaný.
Návraty
true
pokud byl pojmenovaný semafor úspěšně otevřen; v opačném případě . false
V některých případech false
může být vrácena pro neplatné názvy.
- 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 umístit, jako je neznámá předpona nebo neplatné znaky. Všimněte si, že v názvu a běžných předponách Global a Local se rozlišují velká a malá 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
moc dlouhý. Omezení délky mohou záviset na operačním systému nebo konfiguraci.
Pojmenovaný semafor existuje, ale uživatel nemá přístup zabezpečení potřebný k jeho použití.
Poznámky
Předpona name
Global\
může mít předponu nebo Local\
k určení oboru názvů. Při zadání Global
oboru názvů může být synchronizační objekt sdílen s libovolnými 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. V systému 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 s nadřazeným a podřízeným vztahem, kde se všechny spouští ve stejné relaci. Další informace o názvech objektů synchronizace 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í objekt synchronizace. Pokud objekt synchronizace v oboru názvů neexistuje nebo v oboru názvů existuje objekt synchronizace jiného typu, false
je vrácen.
Chcete-li vytvořit semafor systému, pokud ještě neexistuje, použijte jeden z Semaphore konstruktorů, který má name
parametr.
Pokud si nejste jisti, zda pojmenovaný semafor existuje, použijte tuto metodu OpenExisting(String) přetížení místo přetížení metody, která vyvolá výjimku, pokud semafor neexistuje.
Toto přetížení metody je ekvivalentní volání TryOpenExisting přetížení metody a určení SemaphoreRights.SynchronizeSemaphoreRights.Modify a práv v kombinaci pomocí bitové operace OR. Určení příznaku SemaphoreRights.Synchronize umožní vláknu vstoupit do semaforu a určení příznaku SemaphoreRights.Modify umožní vláknu volat metodu Release .
Platí pro
TryOpenExisting(String, SemaphoreRights, Semaphore)
Otevře zadaný pojmenovaný semafor, pokud již existuje, s požadovaným přístupem zabezpečení a vrátí hodnotu, která označuje, zda operace proběhla úspěšně.
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
Název objektu synchronizace, 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 s poznámkami. V závislosti na operačním systému můžou existovat další omezení pro název. Například v operačních systémech se systémem Unix musí být název po vyloučení oboru názvů platný název souboru.
- rights
- SemaphoreRights
Bitové kombinace hodnot výčtu, které představují požadovaný přístup zabezpečení.
- result
- Semaphore
Když tato metoda vrátí, obsahuje Semaphore objekt, který představuje pojmenovaný semafor, pokud volání bylo úspěšné, nebo null
pokud volání selhalo. Tento parametr je považován za neinicializovaný.
Návraty
true
pokud byl pojmenovaný semafor úspěšně otevřen; v opačném případě . false
V některých případech false
může být vrácena pro neplatné názvy.
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 umístit, jako je neznámá předpona nebo neplatné znaky. Všimněte si, že v názvu a běžných předponách Global a Local se rozlišují velká a malá 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
moc dlouhý. Omezení délky mohou záviset na operačním systému nebo konfiguraci.
Pojmenovaný semafor existuje, ale uživatel nemá přístup zabezpečení potřebný k jeho použití.
Poznámky
Předpona name
Global\
může mít předponu nebo Local\
k určení oboru názvů. Při zadání Global
oboru názvů může být synchronizační objekt sdílen s libovolnými 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. V systému 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 s nadřazeným a podřízeným vztahem, kde se všechny spouští ve stejné relaci. Další informace o názvech objektů synchronizace 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í objekt synchronizace. Pokud objekt synchronizace v oboru názvů neexistuje nebo v oboru názvů existuje objekt synchronizace jiného typu, false
je vrácen.
Chcete-li vytvořit semafor systému, pokud ještě neexistuje, použijte jeden z Semaphore konstruktorů, který má name
parametr.
Pokud si nejste jisti, zda pojmenovaný semafor existuje, použijte tuto metodu OpenExisting(String, SemaphoreRights) přetížení místo přetížení metody, která vyvolá výjimku, pokud semafor neexistuje.
Parametr rights
musí obsahovat SemaphoreRights.Synchronize příznak, aby vlákna mohla vstoupit do semaforu SemaphoreRights.Modify , a příznak umožňující vlákna volat metodu Release .
Více volání této metody, které používají stejnou hodnotu pro name
nemusí nutně vrátit stejný Semaphore objekt, i když vrácené objekty představují stejný pojmenovaný semafor systému.