SemaphoreAcl.Create(Int32, Int32, String, Boolean, SemaphoreSecurity) Méthode

Définition

Obtient ou crée une Semaphore instance, ce qui permet à une SemaphoreSecurity instance d’être spécifiée éventuellement pour la définir lors de la création de l’événement.

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

Paramètres

initialCount
Int32

Nombre initial de requêtes pour le sémaphore qui peut être satisfait simultanément.

maximumCount
Int32

Nombre maximal de demandes pour le sémaphore qui peut être satisfait simultanément.

name
String

Nom, si l’objet de synchronisation doit être partagé avec d’autres processus ; sinon, null ou une chaîne vide. Le nom est sensible à la casse. La barre oblique inverse (\) est réservée et peut uniquement être utilisée pour spécifier un espace de noms. Pour plus d’informations sur les espaces de noms, consultez la section remarques. Il peut y avoir d’autres restrictions sur le nom en fonction du système d’exploitation. Par exemple, sur les systèmes d’exploitation Unix, le nom après l’exclusion de l’espace de noms doit être un nom de fichier valide.

createdNew
Boolean

Lorsque cette méthode est retournée, cet argument est toujours défini true si un sémaphore local est créé ; autrement dit, quand name ou nullEmpty. S’il name a une valeur valide et non vide, cet argument est défini true sur le moment où le sémaphore système est créé, ou il est défini false sur si un sémaphore système existant est trouvé avec ce nom. Ce paramètre est passé non initialisé.

semaphoreSecurity
SemaphoreSecurity

Sécurité facultative du contrôle d’accès au sémaphore à appliquer.

Retours

Objet qui représente un sémaphore système, s’il est nommé, ou un sémaphore local, si sans nom.

Exceptions

initialCount est un nombre négatif. - ou -

maximumCount n’est pas un nombre positif.

initialCount est supérieur à maximumCount.

- ou -

.NET Framework uniquement : name est plus long que MAX_PATH (260 caractères).

name n’est pas valide. Cela peut être pour diverses raisons, notamment certaines restrictions qui peuvent être placées par le système d’exploitation, telles qu’un préfixe inconnu ou des caractères non valides. Notez que le nom et les préfixes communs « Global\ » et « Local\ » respectent la casse.

- ou -

Il y a eu une autre erreur. La HResult propriété peut fournir plus d’informations.

Windows uniquement : name spécifié un espace de noms inconnu. Pour plus d’informations, consultez Noms d’objets .

name est trop long. Les restrictions de longueur peuvent dépendre du système d’exploitation ou de la configuration.

Impossible de créer un objet de synchronisation avec l’objet fourni name . Un objet de synchronisation d’un type différent peut avoir le même nom.

Remarques

Il name peut être préfixé Global\ ou Local\ spécifier un espace de noms. Lorsque l’espace Global de noms est spécifié, l’objet de synchronisation peut être partagé avec tous les processus sur le système. Lorsque l’espace Local de noms est spécifié, qui est également la valeur par défaut lorsqu’aucun espace de noms n’est spécifié, l’objet de synchronisation peut être partagé avec des processus dans la même session. Sur Windows, une session est une session de connexion, et les services s’exécutent généralement dans une autre session non interactive. Sur les systèmes d’exploitation de type Unix, chaque interpréteur de commandes a sa propre session. Les objets de synchronisation locale de session peuvent être appropriés pour la synchronisation entre les processus avec une relation parent/enfant où ils s’exécutent tous dans la même session. Pour plus d’informations sur les noms d’objets de synchronisation sur Windows, consultez Object Names.

Si un name objet de synchronisation est fourni et qu’un objet de synchronisation du type demandé existe déjà dans l’espace de noms, l’objet de synchronisation existant est ouvert. Si un objet de synchronisation d’un type différent existe déjà dans l’espace de noms, un WaitHandleCannotBeOpenedException objet est levée. Sinon, un nouvel objet de synchronisation est créé.

Avertissement

Par défaut, un sémaphore nommé n’est pas limité à l’utilisateur qui l’a créé. D’autres utilisateurs peuvent être en mesure d’ouvrir et d’utiliser le sémaphore, y compris interférer avec le sémaphore en acquérant le sémaphore plusieurs fois et ne pas le libérer. Pour restreindre l’accès à des utilisateurs spécifiques, vous pouvez passer un SemaphoreSecurity message lors de la création du sémaphore nommé. Évitez d’utiliser des sémaphores nommés sans restrictions d’accès sur les systèmes susceptibles d’avoir des utilisateurs non approuvés exécutant du code.

S’applique à