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.
Ruft eine Semaphore Instanz ab oder erstellt sie, sodass eine SemaphoreSecurity Instanz optional angegeben werden kann, um sie während der Ereigniserstellung festzulegen.
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 anfängliche Anzahl von Anforderungen für den Semaphor, der gleichzeitig erfüllt werden kann.
- maximumCount
- Int32
Die maximale Anzahl von Anforderungen für den Semaphor, der gleichzeitig erfüllt werden kann.
- name
- String
Der Name, wenn das Synchronisierungsobjekt für andere Prozesse freigegeben werden soll; null andernfalls oder eine leere Zeichenfolge. Bei dem Namen wird die Groß-/Kleinschreibung beachtet. Das umgekehrte Schrägstrichzeichen (\) ist reserviert und kann nur verwendet werden, um einen Namespace anzugeben. Weitere Informationen zu Namespaces finden Sie im Abschnitt "Hinweise". Je nach Betriebssystem kann es weitere Einschränkungen für den Namen geben. Bei Unix-basierten Betriebssystemen muss beispielsweise der Name nach Ausschluss des Namespaces ein gültiger Dateiname sein.
- createdNew
- Boolean
Wenn diese Methode zurückgegeben wird, wird dieses Argument immer festgelegt true , wenn ein lokales Semaphor erstellt wird, d. h. wann name oder nullEmpty. Wenn name ein gültiger, nicht leerer Wert vorhanden ist, wird dieses Argument festgelegt true , wenn das Systemsemaphor erstellt wird, oder es wird festgelegt false , ob ein vorhandenes System-Semaphor mit diesem Namen gefunden wird. Dieser Parameter wird nicht initialisiert übergeben.
- semaphoreSecurity
- SemaphoreSecurity
Die optionale Semaphor-Zugriffssteuerungssicherheit, die angewendet werden soll.
Gibt zurück
Ein Objekt, das ein System-Semaphor darstellt, falls benannt oder ein lokales Semaphor, wenn namelos.
Ausnahmen
initialCount ist eine negative Zahl.
-oder-
maximumCount ist keine positive Zahl.
initialCount ist größer als maximumCount.
-oder-
.NET Framework: name ist länger als MAX_PATH (260 Zeichen).
name ist ungültig. Dies kann aus verschiedenen Gründen sein, einschließlich einiger Einschränkungen, die vom Betriebssystem platziert werden können, z. B. ein unbekanntes Präfix oder ungültige Zeichen. Beachten Sie, dass bei namen und allgemeinen Präfixen "Global\" und "Local\" die Groß-/Kleinschreibung beachtet wird.
-oder-
Es gab einen anderen Fehler. Die HResult Eigenschaft kann weitere Informationen bereitstellen.
nur Windows: name einen unbekannten Namespace angegeben. Weitere Informationen finden Sie unter Objektnamen .
name ist zu lang. Längenbeschränkungen können vom Betriebssystem oder der Konfiguration abhängen.
Ein Synchronisierungsobjekt mit dem bereitgestellten name Objekt kann nicht erstellt werden. Ein Synchronisierungsobjekt eines anderen Typs hat möglicherweise denselben Namen.
Hinweise
Möglicherweise name wird dem Namespace ein Präfix vorangestellt Global\ oder Local\ angegeben. Wenn der Global Namespace angegeben ist, kann das Synchronisierungsobjekt für alle Prozesse im System freigegeben werden. Wenn der Local Namespace angegeben ist, was auch der Standardwert ist, wenn kein Namespace angegeben wird, kann das Synchronisierungsobjekt für Prozesse in derselben Sitzung freigegeben werden. Bei Windows ist eine Sitzung eine Anmeldesitzung, und Dienste werden in der Regel in einer anderen nicht interaktiven Sitzung ausgeführt. Auf Unix-ähnlichen Betriebssystemen verfügt jede Shell über eine eigene Sitzung. Sitzungslokale Synchronisierungsobjekte können für die Synchronisierung zwischen Prozessen mit einer Beziehung zwischen übergeordnetem/untergeordnetem Element geeignet sein, in der sie alle in derselben Sitzung ausgeführt werden. Weitere Informationen zu Synchronisierungsobjektnamen in Windows finden Sie unter Object Names.
Wenn ein name Synchronisierungsobjekt des angeforderten Typs bereits im Namespace vorhanden ist, wird das vorhandene Synchronisierungsobjekt geöffnet. Wenn bereits ein Synchronisierungsobjekt eines anderen Typs im Namespace vorhanden ist, wird ein WaitHandleCannotBeOpenedException Fehler ausgelöst. Andernfalls wird ein neues Synchronisierungsobjekt erstellt.
Vorsicht
Standardmäßig ist ein benannter Semaphor nicht auf den Benutzer beschränkt, der ihn erstellt hat. Andere Benutzer können das Semaphor öffnen und verwenden, einschließlich der Störung des Semaphors, indem sie das Semaphor mehrmals erwerben und nicht freigeben. Um den Zugriff auf bestimmte Benutzer einzuschränken, können Sie beim Erstellen des benannten Semaphors ein SemaphoreSecurity übergeben. Vermeiden Sie die Verwendung von benannten Semaphoren ohne Zugriffsbeschränkungen für Systeme, die möglicherweise nicht vertrauenswürdige Benutzer mit Code ausführen.