SemaphoreAcl.Create(Int32, Int32, String, Boolean, SemaphoreSecurity) Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee haalt u een Semaphore exemplaar op of maakt, zodat een SemaphoreSecurity exemplaar optioneel kan worden opgegeven om deze in te stellen tijdens het maken van de gebeurtenis.
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
Parameters
- initialCount
- Int32
Het eerste aantal aanvragen voor de semaphore dat gelijktijdig kan worden voldaan.
- maximumCount
- Int32
Het maximum aantal aanvragen voor de semaphore dat gelijktijdig kan worden voldaan.
- name
- String
De naam, als het synchronisatieobject moet worden gedeeld met andere processen; anders of null een lege tekenreeks. De naam is hoofdlettergevoelig. Het backslashteken (\) is gereserveerd en kan alleen worden gebruikt om een naamruimte op te geven. Zie de sectie Opmerkingen voor meer informatie over naamruimten. Er kunnen verdere beperkingen gelden voor de naam, afhankelijk van het besturingssysteem. Op Unix-besturingssystemen moet de naam na het uitsluiten van de naamruimte bijvoorbeeld een geldige bestandsnaam zijn.
- createdNew
- Boolean
Wanneer deze methode wordt geretourneerd, wordt dit argument altijd ingesteld true op als er een lokale semafore wordt gemaakt; dat wil gezegd, wanneer namenull of Empty. Als name een geldige, niet-lege waarde is, wordt dit argument ingesteld op true wanneer de systeemmafore wordt gemaakt of is ingesteld false op als een bestaand systeemsemafore met die naam wordt gevonden. Deze parameter wordt niet-geïnitialiseerd doorgegeven.
- semaphoreSecurity
- SemaphoreSecurity
De optionele semaphore toegangsbeheerbeveiliging die moet worden toegepast.
Retouren
Een object dat een systeemsemafore vertegenwoordigt, als het een naam heeft of een lokale semafore, indien naamloos.
Uitzonderingen
initialCount is een negatief getal.
– of –
maximumCount is geen positief getal.
initialCount is groter dan maximumCount.
– of –
alleen .NET Framework: name is langer dan MAX_PATH (260 tekens).
name is ongeldig. Dit kan om verschillende redenen zijn, waaronder enkele beperkingen die mogelijk door het besturingssysteem worden geplaatst, zoals een onbekend voorvoegsel of ongeldige tekens. Houd er rekening mee dat de naam en algemene voorvoegsels 'Global\' en 'Local\' hoofdlettergevoelig zijn.
– of –
Er is een andere fout opgetreden. De HResult eigenschap kan meer informatie bevatten.
alleen Windows: name een onbekende naamruimte opgegeven. Zie Objectnamen voor meer informatie.
Het name is te lang. Lengtebeperkingen kunnen afhankelijk zijn van het besturingssysteem of de configuratie.
Een synchronisatieobject met de opgegeven name kan niet worden gemaakt. Een synchronisatieobject van een ander type kan dezelfde naam hebben.
Opmerkingen
De name naamruimte kan worden voorafgegaan door Global\ of Local\ om een naamruimte op te geven. Wanneer de Global naamruimte is opgegeven, kan het synchronisatieobject worden gedeeld met processen op het systeem. Wanneer de Local naamruimte is opgegeven, wat ook de standaardwaarde is wanneer er geen naamruimte is opgegeven, kan het synchronisatieobject worden gedeeld met processen in dezelfde sessie. Op Windows is een sessie een aanmeldingssessie en worden services meestal uitgevoerd in een andere niet-interactieve sessie. Op Unix-achtige besturingssystemen heeft elke shell een eigen sessie. Sessie-lokale synchronisatieobjecten zijn mogelijk geschikt voor synchronisatie tussen processen met een bovenliggende/onderliggende relatie, waar ze allemaal in dezelfde sessie worden uitgevoerd. Zie Objectnamen voor meer informatie over de namen van synchronisatieobjecten in Windows.
Als er een name is opgegeven en er al een synchronisatieobject van het aangevraagde type bestaat in de naamruimte, wordt het bestaande synchronisatieobject geopend. Als er al een synchronisatieobject van een ander type bestaat in de naamruimte, wordt er een WaitHandleCannotBeOpenedException gegenereerd. Anders wordt er een nieuw synchronisatieobject gemaakt.
Caution
Standaard is een benoemde semafore niet beperkt tot de gebruiker die deze heeft gemaakt. Andere gebruikers kunnen mogelijk deemafore openen en gebruiken, waaronder het verstoren van de semafore door de semafor meerdere keren te verkrijgen en niet vrij te geven. Als u de toegang tot specifieke gebruikers wilt beperken, kunt u een SemaphoreSecurity wachtwoord doorgeven bij het maken van de benoemde semafore. Vermijd het gebruik van benoemde semaforen zonder toegangsbeperkingen voor systemen die mogelijk niet-vertrouwde gebruikers code laten uitvoeren.