SemaphoreAcl.Create(Int32, Int32, String, Boolean, SemaphoreSecurity) 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í.
Získá nebo vytvoří Semaphore instanci, což umožňuje, aby SemaphoreSecurity instance byla volitelně zadána k nastavení během vytváření události.
public:
static System::Threading::Semaphore ^ Create(int initialCount, int maximumCount, System::String ^ name, [Runtime::InteropServices::Out] bool % createdNew, System::Security::AccessControl::SemaphoreSecurity ^ semaphoreSecurity);
public static System.Threading.Semaphore Create (int initialCount, int maximumCount, string? name, out bool createdNew, System.Security.AccessControl.SemaphoreSecurity? semaphoreSecurity);
static member Create : int * int * string * bool * System.Security.AccessControl.SemaphoreSecurity -> System.Threading.Semaphore
Public Shared Function Create (initialCount As Integer, maximumCount As Integer, name As String, ByRef createdNew As Boolean, semaphoreSecurity As SemaphoreSecurity) As Semaphore
Parametry
- initialCount
- Int32
Počáteční počet požadavků na semafor, který může být současně splněn.
- maximumCount
- Int32
Maximální počet požadavků na semafor, který může být současně splněn.
- name
- String
Název, pokud synchronizační objekt má být sdílen s jinými procesy; null
nebo prázdný řetězec. 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.
- createdNew
- Boolean
Když tato metoda vrátí hodnotu , je tento argument vždy nastaven na true
hodnotu , pokud je vytvořen místní semafor, tj. když name
je null
nebo Empty. Pokud name
má platnou, neprázdnou hodnotu, je tento argument nastaven na true
při vytvoření systémového semaforu nebo je nastaven na hodnotu false
, pokud je nalezen existující systémový semafor s tímto názvem. Tento parametr se předává neinicializovaný.
- semaphoreSecurity
- SemaphoreSecurity
Volitelné zabezpečení řízení přístupu k semaforu, které se má použít.
Návraty
Objekt, který představuje systémový semafor, je-li pojmenován, nebo místní semafor, pokud bez názvu.
Výjimky
initialCount
je větší než maximumCount
.
-nebo-
Pouze rozhraní .NET Framework: name
je delší než MAX_PATH (260 znaků).
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.
-nebo-
Došlo k jiné chybě. Vlastnost HResult
může poskytnout další informace.
Pouze windows: name
zadal neznámý obor názvů. Další informace najdete v tématu Názvy objektů .
Je name
příliš dlouhý. Omezení délky může záviset na operačním systému nebo konfiguraci.
Synchronizační objekt se zadaným name
objektem nelze vytvořit. Objekt synchronizace jiného typu může mít stejný název.
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ů.
name
Pokud je zadán a objekt synchronizace požadovaného typu již existuje v oboru názvů, existující synchronizační objekt je otevřen. Pokud synchronizační objekt jiného typu již v oboru názvů existuje, WaitHandleCannotBeOpenedException
vyvolá se objekt . V opačném případě se vytvoří nový synchronizační objekt.
Upozornění
Ve výchozím nastavení není pojmenovaný semafor omezen na uživatele, který ho vytvořil. Ostatní uživatelé mohou být schopni otevřít a používat semafor, včetně rušení semaforu získáním semaforu vícekrát a jeho uvolněním. Pokud chcete omezit přístup na konkrétní uživatele, můžete při vytváření pojmenovaného semaforu předat SemaphoreSecurity . Nepoužívejte pojmenované semafory bez omezení přístupu v systémech, které můžou mít nedůvěryhodné uživatele spouštěné kódem.