SemaphoreAcl.Create(Int32, Int32, String, Boolean, SemaphoreSecurity) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Hiermit wird eine Semaphore-Instanz abgerufen oder erstellt, sodass optional eine SemaphoreSecurity-Instanz angegeben werden kann, um eine Festlegung bei der Ereigniserstellung zu ermöglichen.
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
Parameter
- initialCount
- Int32
Die ursprüngliche Anzahl von Anforderungen für das Semaphor, die gleichzeitig ausgeführt werden können.
- maximumCount
- Int32
Die maximale Anzahl von Anforderungen für das Semaphor, die gleichzeitig ausgeführt werden können.
- name
- String
Der Name, wenn das Synchronisierungsobjekt für andere Prozesse freigegeben werden soll; andernfalls null
oder eine leere Zeichenfolge. Bei dem Namen wird die Groß- und Kleinschreibung berücksichtigt. Das umgekehrte Schrägstrichzeichen (\) ist reserviert und kann nur zum Angeben eines Namespace verwendet werden. Weitere Informationen zu Namespaces finden Sie im Abschnitt hinweise. Je nach Betriebssystem kann es weitere Einschränkungen für den Namen geben. Unter Unix-basierten Betriebssystemen muss beispielsweise der Name nach dem Ausschluss des Namespace ein gültiger Dateiname sein.
- createdNew
- Boolean
Wenn diese Methode zurückgegeben wird, wird dieses Argument immer auf true
festgelegt, wenn ein lokales Semaphor erstellt wird (d. h. wenn name
entweder null
oder dem Feld Empty entspricht). Wenn name
über einen gültigen und nicht leeren Wert verfügt, wird dieses Argument auf true
festgelegt, wenn das Systemsemaphor erstellt wird, oder es wird auf false
festgelegt, wenn ein vorhandenes Systemsemaphor mit diesem Namen gefunden wird. Dieser Parameter wird nicht initialisiert übergeben.
- semaphoreSecurity
- SemaphoreSecurity
Dies ist die optional anzuwendende Zugriffssteuerungssicherheit für das Semaphor.
Gibt zurück
Dies ist ein Objekt, das bei einem angegebenen Namen ein Systemsemaphor und bei keinem angegebenen Namen ein lokales Semaphor darstellt.
Ausnahmen
initialCount
ist eine negative Zahl.
- oder -
maximumCount
ist keine positive Zahl.
initialCount
ist größer als maximumCount
.
- oder -
Nur .NET Framework: name
ist länger als MAX_PATH (260 Zeichen).
name
ist ungültig. Dies kann aus verschiedenen Gründen der Fall sein, z. B. durch Einschränkungen, die vom Betriebssystem auferlegt werden, etwa ein unbekanntes Präfix oder ungültige Zeichen. Beachten Sie, dass bei dem Namen und den allgemeinen Präfixen "Global\" und "Local\" die Groß-/Kleinschreibung beachtet wird.
- oder -
Es ist ein anderer Fehler aufgetreten. DieHResult
-Eigenschaft stellt möglicherweise weitere Informationen zur Verfügung.
Nur Windows: name
hat einen unbekannten Namespace angegeben. Weitere Informationen finden Sie unter Objektnamen.
name
ist zu lang. Längeneinschränkungen können vom Betriebssystem oder der Konfiguration abhängen.
Ein Synchronisierungsobjekt mit dem angegebenen name
kann nicht erstellt werden. Ein Synchronisierungsobjekt eines anderen Typs weist ggf. denselben Namen auf.
Hinweise
Kann name
mit Global\
dem Präfix oder Local\
versehen werden, um einen Namespace anzugeben. Wenn der Global
Namespace angegeben ist, kann das Synchronisierungsobjekt für alle Prozesse im System freigegeben werden. Wenn der Local
Namespace angegeben wird, was auch der Standardwert ist, wenn kein Namespace angegeben wird, kann das Synchronisierungsobjekt für Prozesse in derselben Sitzung freigegeben werden. Unter Windows ist eine Sitzung eine Anmeldesitzung, und Dienste werden in der Regel in einer anderen nicht interaktiven Sitzung ausgeführt. Unter Unix-ähnlichen Betriebssystemen verfügt jede Shell über eine eigene Sitzung. Sitzungslokale Synchronisierungsobjekte eignen sich möglicherweise für die Synchronisierung zwischen Prozessen mit einer über-/untergeordneten Beziehung, in der sie alle in derselben Sitzung ausgeführt werden. Weitere Informationen zu Synchronisierungsobjektnamen unter Windows finden Sie unter Objektnamen.
Wenn ein name
bereitgestellt wird und ein Synchronisierungsobjekt des angeforderten Typs bereits im Namespace vorhanden ist, wird das vorhandene Synchronisierungsobjekt geöffnet. Wenn ein Synchronisierungsobjekt eines anderen Typs bereits im Namespace vorhanden ist, wird eine WaitHandleCannotBeOpenedException
ausgelöst. Andernfalls wird ein neues Synchronisierungsobjekt erstellt.
Achtung
Standardmäßig ist ein benannter Semaphor nicht auf den Benutzer beschränkt, der es erstellt hat. Andere Benutzer sind möglicherweise in der Lage, den Semaphor zu öffnen und zu verwenden, einschließlich der Interferenz mit dem Semaphor, indem sie den Semaphor mehrmals erwerben und nicht freigeben. Um den Zugriff auf bestimmte Benutzer einzuschränken, können Sie beim Erstellen des benannten Semaphors eine SemaphoreSecurity übergeben. Vermeiden Sie die Verwendung benannter Semaphore ohne Zugriffsbeschränkungen auf Systemen, auf denen möglicherweise nicht vertrauenswürdige Benutzer Code ausführen.