Freigeben über


MutexAcl.Create(Boolean, String, Boolean, MutexSecurity) Methode

Definition

Hiermit wird eine Mutex-Instanz abgerufen oder erstellt, sodass optional eine MutexSecurity-Instanz angegeben werden kann, um eine Festlegung bei der Mutexerstellung zu ermöglichen.

public:
 static System::Threading::Mutex ^ Create(bool initiallyOwned, System::String ^ name, [Runtime::InteropServices::Out] bool % createdNew, System::Security::AccessControl::MutexSecurity ^ mutexSecurity);
public static System.Threading.Mutex Create (bool initiallyOwned, string? name, out bool createdNew, System.Security.AccessControl.MutexSecurity? mutexSecurity);
static member Create : bool * string * bool * System.Security.AccessControl.MutexSecurity -> System.Threading.Mutex
Public Shared Function Create (initiallyOwned As Boolean, name As String, ByRef createdNew As Boolean, mutexSecurity As MutexSecurity) As Mutex

Parameter

initiallyOwned
Boolean

true, um dem aufrufenden Thread den anfänglichen Besitz des benannten Systemmutex zuzuweisen, wenn der benannte Systemmutex als Ergebnis dieses Aufrufs erstellt wird, andernfalls false.

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 Mutex erstellt wird (d. h. wenn name entweder null oder Empty ist). Wenn name über einen gültigen und nicht leeren Wert verfügt, wird dieses Argument auf true festgelegt, wenn das Systemmutex erstellt wird, oder es wird auf false festgelegt, wenn ein vorhandenes Systemmutex mit diesem Namen gefunden wird. Dieser Parameter wird nicht initialisiert übergeben.

mutexSecurity
MutexSecurity

Dies ist die optional anzuwendende Zugriffssteuerungssicherheit für das Mutex.

Gibt zurück

Dies ist ein Objekt, das bei einem angegebenen Namen ein Systemmutex und bei keinem angegebenen Namen ein lokales Mutex darstellt.

Ausnahmen

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 Mutex nicht auf den Benutzer beschränkt, der ihn erstellt hat. Andere Benutzer sind möglicherweise in der Lage, den Mutex zu öffnen und zu verwenden, einschließlich der Störung des Mutex, indem sie den Mutex eingeben und ihn nicht verlassen. Um den Zugriff auf bestimmte Benutzer einzuschränken, können Sie beim Erstellen des benannten Mutex eine MutexSecurity übergeben. Vermeiden Sie die Verwendung benannter Mutexes ohne Zugriffsbeschränkungen auf Systemen, auf denen möglicherweise nicht vertrauenswürdige Benutzer Code ausführen.

Gilt für: