SemaphoreAcl.Create(Int32, Int32, String, Boolean, SemaphoreSecurity) Metod

Definition

Hämtar eller skapar en Semaphore instans, vilket gör att en SemaphoreSecurity instans kan anges om du vill ange den när händelsen skapas.

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

Parametrar

initialCount
Int32

Det första antalet begäranden för semaforen som kan uppfyllas samtidigt.

maximumCount
Int32

Det maximala antalet begäranden för semafor som kan uppfyllas samtidigt.

name
String

Namnet, om synkroniseringsobjektet ska delas med andra processer; eller null en tom sträng. Namnet är skiftlägeskänsligt. Omvänt snedstreck (\) är reserverat och kan endast användas för att ange ett namnområde. Mer information om namnområden finns i avsnittet kommentarer. Det kan finnas ytterligare begränsningar för namnet beroende på operativsystemet. På Unix-baserade operativsystem måste till exempel namnet efter exkludering av namnområdet vara ett giltigt filnamn.

createdNew
Boolean

När den här metoden returneras är det här argumentet alltid inställt på true om en lokal semafor skapas, dvs. när name är null eller Empty. Om name har ett giltigt, icke-tomt värde anges det här argumentet till true när systemets semafor skapas, eller så är det inställt på false om en befintlig systemsemafor hittas med det namnet. Den här parametern skickas oinitierad.

semaphoreSecurity
SemaphoreSecurity

Den valfria semaforåtkomstkontrollsäkerhet som ska tillämpas.

Returer

Ett objekt som representerar en systemsemafor, om det heter, eller en lokal semafor, om den är namnlös.

Undantag

initialCount är ett negativt tal. -eller-

maximumCount är inte ett positivt tal.

initialCount är större än maximumCount.

-eller-

endast .NET Framework: name är längre än MAX_PATH (260 tecken).

name är ogiltigt. Detta kan bero på olika orsaker, inklusive vissa begränsningar som kan finnas i operativsystemet, till exempel ett okänt prefix eller ogiltiga tecken. Observera att namnet och de vanliga prefixen "Global\" och "Local\" är skiftlägeskänsliga.

-eller-

Det uppstod ett annat fel. Egenskapen HResult kan ge mer information.

endast Windows: name angett ett okänt namnområde. Mer information finns i Objektnamn .

Den name är för lång. Längdbegränsningar kan bero på operativsystemet eller konfigurationen.

Det går inte att skapa ett synkroniseringsobjekt med det angivna name objektet. Ett synkroniseringsobjekt av en annan typ kan ha samma namn.

Kommentarer

name Kan vara prefix med Global\ eller Local\ för att ange ett namnområde. Global När namnområdet har angetts kan synkroniseringsobjektet delas med alla processer i systemet. Local När namnområdet har angetts, vilket också är standard när inget namnområde anges, kan synkroniseringsobjektet delas med processer i samma session. På Windows är en session en inloggningssession och tjänster körs vanligtvis i en annan icke-interaktiv session. På Unix-liknande operativsystem har varje gränssnitt en egen session. Sessionslokala synkroniseringsobjekt kan vara lämpliga för synkronisering mellan processer med en överordnad/underordnad relation där alla körs i samma session. Mer information om synkroniseringsobjektnamn på Windows finns i Object Names.

Om en name tillhandahålls och det redan finns ett synkroniseringsobjekt av den begärda typen i namnområdet öppnas det befintliga synkroniseringsobjektet. Om det redan finns ett synkroniseringsobjekt av en annan typ i namnområdet genereras ett WaitHandleCannotBeOpenedException . Annars skapas ett nytt synkroniseringsobjekt.

Caution

Som standard är en namngiven semafor inte begränsad till den användare som skapade den. Andra användare kan öppna och använda semaforen, inklusive att störa semaforen genom att förvärva semaforen flera gånger och inte släppa den. Om du vill begränsa åtkomsten till specifika användare kan du skicka in en SemaphoreSecurity när du skapar den namngivna semaforen. Undvik att använda namngivna semaphores utan åtkomstbegränsningar för system som kanske inte har betrodda användare som kör kod.

Gäller för