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, jestli operace byla úspěšná.
Přetížení
TryOpenExisting(String, Semaphore) |
Otevře zadaný pojmenovaný semaphore, pokud již existuje, a vrátí hodnotu, která označuje, zda operace byla ú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 byla úspěšná. |
TryOpenExisting(String, Semaphore)
Otevře zadaný pojmenovaný semaphore, pokud již existuje, a vrátí hodnotu, která označuje, zda operace byla ú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. V názvu se rozlišují velká a malá písmena.
- result
- Semaphore
Když 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
true
pokud 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-
.NET Framework pouze: 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, například neznámé předpony nebo neplatné znaky. Všimněte si, že název a společné předpony "Global" and "Local jsou citlivé na 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.
Je name
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
být předpona nebo Global\
Local\
zadat obor názvů. Global
Po zadání 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ů, může být synchronizační objekt sdílen s procesy ve stejné relaci. V Windows je 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 relací nadřazené/podřízené, 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á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 existuje synchronizační objekt jiného typu v oboru názvů, false
vrátí se.
Chcete-li vytvořit systém semaphore, pokud ještě neexistuje, použijte jeden z Semaphore konstruktorů, který má name
parametr.
Pokud si nejste jistí, zda pojmenované semaphore existuje, použijte tuto metodu OpenExisting(String) přetížení místo 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 kombinované pomocí bitwise OR operace. Určení příznaku SemaphoreRights.Synchronize umožňuje vláknu zadat semaphore a určení 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 byla ú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. V názvu se rozlišují velká a malá písmena.
- 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ý semaphore, pokud volání bylo úspěšné nebo null
pokud volání selhalo. Tento parametr se považuje za neinicializovaný.
Návraty
true
pokud byl pojmenovaný semaphore úspěšně otevřen; false
v opačném případě . 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-
.NET Framework pouze: 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, například neznámé předpony nebo neplatné znaky. Všimněte si, že název a společné předpony "Global" and "Local jsou citlivé na 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.
Je name
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\
určit obor názvů. Global
Pokud je zadán obor 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 Windows je relace relace přihlášení a služby obvykle běží v jiné neinteraktivní relaci. V operačních systémech podobných unixovým systémům má každé prostředí vlastní relaci. Objekty místní synchronizace relace můžou být vhodné pro synchronizaci mezi procesy s nadřazeným nebo podřízeným vztahem, ve kterém se všechny spouští ve stejné relaci. Další informace o názvech synchronizačních objektů v Windows naleznete 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 existuje synchronizační objekt jiného typu v oboru názvů, false
vrátí se.
Chcete-li vytvořit systém semaphore, pokud ještě neexistuje, použijte jeden z Semaphore konstruktorů, který má name
parametr.
Pokud si nejste jistí, zda pojmenované semaphore existuje, použijte tuto metodu OpenExisting(String, SemaphoreRights) přetížení místo přetížení metody, která vyvolá výjimku, pokud semaphore neexistuje.
Parametr rights
musí obsahovat SemaphoreRights.Synchronize příznak, který umožňuje vlákenm 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ém semaphore.