Freigeben über


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

Definition

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.

Gilt für: