SemaphoreAcl.Create(Int32, Int32, String, Boolean, SemaphoreSecurity) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera lub tworzy Semaphore wystąpienie, co umożliwia SemaphoreSecurity opcjonalne określenie wystąpienia w celu ustawienia go podczas tworzenia zdarzenia.
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
Początkowa liczba żądań semafora, które mogą być spełnione jednocześnie.
- maximumCount
- Int32
Maksymalna liczba żądań semafora, które mogą być spełnione jednocześnie.
- name
- String
Nazwa, jeśli obiekt synchronizacji ma być współużytkowany z innymi procesami; null w przeciwnym razie lub pusty ciąg. W nazwie rozróżniane są wielkie i małe litery. Znak ukośnika odwrotnego (\) jest zarezerwowany i może służyć tylko do określania przestrzeni nazw. Aby uzyskać więcej informacji na temat przestrzeni nazw, zobacz sekcję uwagi. W zależności od systemu operacyjnego mogą istnieć dalsze ograniczenia dotyczące nazwy. Na przykład w systemach operacyjnych opartych na systemie Unix nazwa po wykluczeniu przestrzeni nazw musi być prawidłową nazwą pliku.
- createdNew
- Boolean
Gdy ta metoda zwraca, ten argument jest zawsze ustawiany na true wartość , jeśli zostanie utworzony lokalny semafor, czyli wtedy, gdy name jest lub nullEmpty. Jeśli name ma prawidłową, niepustą wartość, ten argument jest ustawiany na true czas tworzenia semafora systemowego lub jest ustawiony, false jeśli istniejący semafor systemu zostanie znaleziony z tą nazwą. Ten parametr jest przekazywany niezainicjowany.
- semaphoreSecurity
- SemaphoreSecurity
Opcjonalne zabezpieczenia kontroli dostępu semafora do zastosowania.
Zwraca
Obiekt reprezentujący semafor systemowy, jeśli nazwany lub lokalny semafor, jeśli jest bez nazw.
Wyjątki
initialCount jest liczbą ujemną.
— lub —
maximumCount nie jest liczbą dodatnią.
initialCount jest większa niż maximumCount.
— lub —
tylko .NET Framework: name jest dłuższy niż MAX_PATH (260 znaków).
name jest nieprawidłowy. Może to być z różnych powodów, w tym niektóre ograniczenia, które mogą zostać wprowadzone przez system operacyjny, takie jak nieznany prefiks lub nieprawidłowe znaki. Należy pamiętać, że w nazwach i typowych prefiksach "Global\" i "Local\" uwzględniana jest wielkość liter.
— lub —
Wystąpił inny błąd. Właściwość HResult może podać więcej informacji.
Windows tylko: name określono nieznaną przestrzeń nazw. Aby uzyskać więcej informacji, zobacz Nazwy obiektów .
Element name jest za długi. Ograniczenia długości mogą zależeć od systemu operacyjnego lub konfiguracji.
Nie można utworzyć obiektu synchronizacji z podanym name obiektem. Obiekt synchronizacji innego typu może mieć taką samą nazwę.
Uwagi
Element name może być poprzedzony prefiksem Global\ lub Local\ , aby określić przestrzeń nazw. Po określeniu Global przestrzeni nazw obiekt synchronizacji może być współużytkowany z dowolnymi procesami w systemie. Po określeniu Local przestrzeni nazw, która jest również wartością domyślną, gdy nie określono żadnej przestrzeni nazw, obiekt synchronizacji może być współużytkowany z procesami w tej samej sesji. W Windows sesja jest sesją logowania, a usługi są zwykle uruchamiane w innej sesji nieinterakcyjnej. W systemach operacyjnych podobnych do unix każda powłoka ma własną sesję. Obiekty synchronizacji lokalnej sesji mogą być odpowiednie do synchronizacji między procesami z relacją nadrzędną/podrzędną, w której wszystkie są uruchamiane w tej samej sesji. Aby uzyskać więcej informacji na temat nazw obiektów synchronizacji w Windows, zobacz Object Names.
name Jeśli element jest podany i obiekt synchronizacji żądanego typu już istnieje w przestrzeni nazw, istniejący obiekt synchronizacji jest otwarty. Jeśli obiekt synchronizacji innego typu już istnieje w przestrzeni nazw, WaitHandleCannotBeOpenedException zostanie zgłoszony element . W przeciwnym razie zostanie utworzony nowy obiekt synchronizacji.
Caution
Domyślnie nazwany semafor nie jest ograniczony do użytkownika, który go utworzył. Inni użytkownicy mogą być w stanie otworzyć i użyć semafora, w tym zakłócać semafor, uzyskując semafor wiele razy i nie zwalniając go. Aby ograniczyć dostęp do określonych użytkowników, możesz przekazać SemaphoreSecurity element podczas tworzenia nazwanego semafora. Unikaj używania nazwanych semaforów bez ograniczeń dostępu do systemów, które mogą mieć niezaufanych użytkowników z uruchomionym kodem.