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ý semaphore, pokud již existuje, a vrátí hodnotu, která označuje, zda operace proběhla úspěšně.
Přetížení
| Name | Description |
|---|---|
| TryOpenExisting(String, Semaphore) |
Otevře zadaný pojmenovaný semaphore, pokud již existuje, a vrátí hodnotu, která označuje, zda operace proběhla úspěšně. |
| TryOpenExisting(String, SemaphoreRights, Semaphore) |
Otevře zadaný pojmenovaný semaphore, 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, NamedWaitHandleOptions, Semaphore) |
Otevře zadaný pojmenovaný semaphore, pokud již existuje, a vrátí hodnotu, která označuje, zda operace proběhla úspěšně. Pokud jsou možnosti nastaveny pouze na aktuálního uživatele, ověří se u volajícího uživatele řízení přístupu objektu. |
TryOpenExisting(String, Semaphore)
- Zdroj:
- Semaphore.cs
- Zdroj:
- Semaphore.cs
- Zdroj:
- Semaphore.cs
- Zdroj:
- Semaphore.cs
- Zdroj:
- Semaphore.cs
Otevře zadaný pojmenovaný semaphore, 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 synchronizačního objektu, který se má sdílet s jinými procesy. Název je citlivý na velikost písmen. 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 operačních systémech se systémem Unix musí být název po vyloučení oboru názvů platným názvem souboru.
- result
- Semaphore
Pokud tato metoda vrátí, obsahuje Semaphore objekt, který představuje pojmenovaný semaphore, pokud volání bylo úspěšné nebo null pokud volání selhalo. Tento parametr se považuje za neinicializovaný.
Návraty
truepokud byl pojmenovaný semaphore úspěšně otevřen; v opačném případě . false V některých případech false může být vrácena neplatná jména.
- Atributy
Výjimky
name je prázdný řetězec.
nebo
pouze .NET Framework: name je delší než MAX_PATH (260 znaků).
name je null.
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, například neznámé předpony nebo neplatné znaky. Všimněte si, že název 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 nějaké jiné chybě. Vlastnost HResult může poskytnout další informace.
name je příliš dlouhý. Omezení délky můžou záviset na operačním systému nebo konfiguraci.
Pojmenovaný semaphore existuje, ale uživatel nemá přístup zabezpečení potřebný k jeho použití.
Poznámky
Může name mít předponu Global\ nebo Local\ zadat obor názvů.
Global Po zadání oboru názvů může být synchronizační objekt 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. Na Windows je relace relace přihlášení a služby se obvykle spouští v jiné neinteraktivní relaci. V operačních systémech Unix má každé prostředí vlastní relaci. Objekty místní synchronizace relace můžou být vhodné pro synchronizaci mezi procesy s vztahem nadřazenosti nebo podřízenosti, kde se všechny spouští ve stejné relaci. Další informace o názvech synchronizačních objektů v Windows najdete v tématu Názvové objektyobjektu.
Pokud v oboru názvů existuje objekt synchronizace požadovaného typu, otevře se existující objekt synchronizace. Pokud synchronizační objekt v oboru názvů neexistuje nebo existuje objekt synchronizace jiného typu v oboru názvů, false je vrácen.
Chcete-li vytvořit systém semaphore, pokud ještě neexistuje, použijte jeden z Semaphore konstruktorů, které mají name parametr.
Pokud si nejste jisti, zda pojmenované semaphore existuje, použijte tuto metodu přetížení namísto OpenExisting(String) přetížení metody, která vyvolá výjimku, pokud semaphore neexistuje.
Toto přetížení metody je ekvivalentní volání TryOpenExisting přetížení metody a určení SemaphoreRights.Synchronize a SemaphoreRights.Modify práva v kombinaci pomocí bitové OPERACE OR. Zadáním příznaku SemaphoreRights.Synchronize lze vlákno zadat semaphore a zadáním SemaphoreRights.Modify příznaku umožňuje vlákno volat metodu Release .
Platí pro
TryOpenExisting(String, SemaphoreRights, Semaphore)
Otevře zadaný pojmenovaný semaphore, 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 synchronizačního objektu, který se má sdílet s jinými procesy. Název je citlivý na velikost písmen. 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 operačních systémech se systémem Unix musí být název po vyloučení oboru názvů platným názvem souboru.
- rights
- SemaphoreRights
Bitové kombinace hodnot výčtu, které představují požadovaný přístup zabezpečení.
- result
- Semaphore
Pokud tato metoda vrátí, obsahuje Semaphore objekt, který představuje pojmenovaný semaphore, pokud volání bylo úspěšné nebo null pokud volání selhalo. Tento parametr se považuje za neinicializovaný.
Návraty
truepokud byl pojmenovaný semaphore úspěšně otevřen; v opačném případě . false V některých případech false může být vrácena neplatná jména.
Výjimky
name je prázdný řetězec.
nebo
pouze .NET Framework: name je delší než MAX_PATH (260 znaků).
name je null.
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, například neznámé předpony nebo neplatné znaky. Všimněte si, že název 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 nějaké jiné chybě. Vlastnost HResult může poskytnout další informace.
name je příliš dlouhý. Omezení délky můžou záviset na operačním systému nebo konfiguraci.
Pojmenovaný semaphore existuje, ale uživatel nemá přístup zabezpečení potřebný k jeho použití.
Poznámky
Může name mít předponu Global\ nebo Local\ zadat obor názvů.
Global Po zadání oboru názvů může být synchronizační objekt 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. Na Windows je relace relace přihlášení a služby se obvykle spouští v jiné neinteraktivní relaci. V operačních systémech Unix má každé prostředí vlastní relaci. Objekty místní synchronizace relace můžou být vhodné pro synchronizaci mezi procesy s vztahem nadřazenosti nebo podřízenosti, kde se všechny spouští ve stejné relaci. Další informace o názvech synchronizačních objektů v Windows najdete v tématu Názvové objektyobjektu.
Pokud v oboru názvů existuje objekt synchronizace požadovaného typu, otevře se existující objekt synchronizace. Pokud synchronizační objekt v oboru názvů neexistuje nebo existuje objekt synchronizace jiného typu v oboru názvů, false je vrácen.
Chcete-li vytvořit systém semaphore, pokud ještě neexistuje, použijte jeden z Semaphore konstruktorů, které mají name parametr.
Pokud si nejste jisti, zda pojmenované semaphore existuje, použijte tuto metodu přetížení namísto OpenExisting(String, SemaphoreRights) přetížení metody, která vyvolá výjimku, pokud semaphore neexistuje.
Parametr rights musí obsahovat SemaphoreRights.Synchronize příznak, který umožňuje vláknům zadat semaphore a SemaphoreRights.Modify příznak, aby vlákna mohla 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ý systémový semaphore.
Platí pro
TryOpenExisting(String, NamedWaitHandleOptions, Semaphore)
- Zdroj:
- Semaphore.cs
- Zdroj:
- Semaphore.cs
Otevře zadaný pojmenovaný semaphore, pokud již existuje, a vrátí hodnotu, která označuje, zda operace proběhla úspěšně. Pokud jsou možnosti nastaveny pouze na aktuálního uživatele, ověří se u volajícího uživatele řízení přístupu objektu.
public:
static bool TryOpenExisting(System::String ^ name, System::Threading::NamedWaitHandleOptions options, [Runtime::InteropServices::Out] System::Threading::Semaphore ^ % result);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static bool TryOpenExisting(string name, System.Threading.NamedWaitHandleOptions options, out System.Threading.Semaphore? result);
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member TryOpenExisting : string * System.Threading.NamedWaitHandleOptions * Semaphore -> bool
Public Shared Function TryOpenExisting (name As String, options As NamedWaitHandleOptions, ByRef result As Semaphore) As Boolean
Parametry
- name
- String
Název synchronizačního objektu, který se má sdílet s jinými procesy. Název je citlivý na velikost písmen. 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.
- options
- NamedWaitHandleOptions
Možnosti oboru pojmenovaného semaforu. Ve výchozím nastavení je přístup omezený pouze na aktuálního uživatele a aktuální relaci. Zadané možnosti mohou ovlivnit obor názvů názvu a přístup k podkladovému objektu semaphore.
- result
- Semaphore
Pokud tato metoda vrátí, obsahuje Semaphore objekt, který představuje pojmenovaný semaphore, pokud volání bylo úspěšné nebo null pokud volání selhalo. Tento parametr se považuje za neinicializovaný.
Návraty
truepokud byl pojmenovaný semaphore úspěšně otevřen; v opačném případě . false V některých případech false může být vrácena neplatná jména.
- Atributy
Výjimky
name je prázdný řetězec.
name je null.
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, například neznámé předpony nebo neplatné znaky. Všimněte si, že název 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 nějaké jiné chybě. Vlastnost HResult může poskytnout další informace.
name je příliš dlouhý. Omezení délky můžou záviset na operačním systému nebo konfiguraci.
Pojmenovaný semaphore existuje, ale uživatel nemá přístup zabezpečení potřebný k jeho použití.
Poznámky
Pokud v oboru názvů existuje objekt synchronizace požadovaného typu, otevře se existující objekt synchronizace. Pokud options však určuje přístup omezený na aktuálního uživatele a synchronizační objekt není kompatibilní s ním, false vrátí se. Pokud synchronizační objekt v oboru názvů neexistuje nebo existuje objekt synchronizace jiného typu v oboru názvů, false vrátí se také.
Chcete-li vytvořit systém semaphore, pokud ještě neexistuje, použijte jeden z Semaphore konstruktorů, které mají name parametr.
Pokud si nejste jisti, zda pojmenované semaphore existuje, použijte tuto metodu přetížení namísto OpenExisting(String) přetížení metody, která vyvolá výjimku, pokud semaphore neexistuje.