Semaphore.TryOpenExisting Metoda

Definice

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

Boolean

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-

.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

Boolean

true pokud byl pojmenovaný semaphore úspěšně otevřen; falsev 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.

Platí pro