Semaphore.TryOpenExisting Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Ouvre un sémaphore nommé spécifié, s’il existe déjà, et retourne une valeur qui indique si l’opération a réussi.
Surcharges
| Nom | Description |
|---|---|
| TryOpenExisting(String, Semaphore) |
Ouvre le sémaphore nommé spécifié, s’il existe déjà, et retourne une valeur qui indique si l’opération a réussi. |
| TryOpenExisting(String, SemaphoreRights, Semaphore) |
Ouvre le sémaphore nommé spécifié, s’il existe déjà, avec l’accès de sécurité souhaité et retourne une valeur qui indique si l’opération a réussi. |
TryOpenExisting(String, Semaphore)
Ouvre le sémaphore nommé spécifié, s’il existe déjà, et retourne une valeur qui indique si l’opération a réussi.
public:
static bool TryOpenExisting(System::String ^ name, [Runtime::InteropServices::Out] System::Threading::Semaphore ^ % result);
public static bool TryOpenExisting(string name, out System.Threading.Semaphore result);
static member TryOpenExisting : string * Semaphore -> bool
Public Shared Function TryOpenExisting (name As String, ByRef result As Semaphore) As Boolean
Paramètres
- name
- String
Nom de l’objet de synchronisation à partager avec d’autres processus. 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.
- result
- Semaphore
Lorsque cette méthode est retournée, contient un Semaphore objet qui représente le sémaphore nommé si l’appel a réussi ou null si l’appel a échoué. Ce paramètre est traité comme non initialisé.
Retours
true si le sémaphore nommé a été ouvert avec succès ; sinon, false. Dans certains cas, false peut être retourné pour les noms non valides.
Exceptions
name est une chaîne vide.
-ou-
.NET Framework uniquement : name est plus long que MAX_PATH (260 caractères).
name a la valeur null.
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. Pour certains noms non valides, la méthode peut retourner false à la place.
-ou-
Il y a eu une autre erreur. La HResult propriété peut fournir plus d’informations.
name est trop long. Les restrictions de longueur peuvent dépendre du système d’exploitation ou de la configuration.
Le sémaphore nommé existe, mais l’utilisateur n’a pas l’accès de sécurité requis pour l’utiliser.
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 objet de synchronisation du type demandé existe dans l’espace de noms, l’objet de synchronisation existant est ouvert. Si un objet de synchronisation n’existe pas dans l’espace de noms, ou si un objet de synchronisation d’un type différent existe dans l’espace de noms, false est retourné.
Pour créer le sémaphore système lorsqu’il n’existe pas déjà, utilisez l’un Semaphore des constructeurs qui ont un name paramètre.
Si vous ne savez pas si un sémaphore nommé existe, utilisez cette surcharge de méthode au lieu de la OpenExisting(String) surcharge de méthode, ce qui lève une exception si le sémaphore n’existe pas.
Cette surcharge de méthode est équivalente à l’appel de la TryOpenExisting surcharge de méthode et à la spécification et SemaphoreRights.Synchronize aux SemaphoreRights.Modify droits, combinés à l’aide de l’opération OR au niveau du bit. La spécification de l’indicateur SemaphoreRights.Synchronize permet à un thread d’entrer le sémaphore et de spécifier l’indicateur SemaphoreRights.Modify permet à un thread d’appeler la Release méthode.
S’applique à
TryOpenExisting(String, SemaphoreRights, Semaphore)
Ouvre le sémaphore nommé spécifié, s’il existe déjà, avec l’accès de sécurité souhaité et retourne une valeur qui indique si l’opération a réussi.
public:
static bool TryOpenExisting(System::String ^ name, System::Security::AccessControl::SemaphoreRights rights, [Runtime::InteropServices::Out] System::Threading::Semaphore ^ % result);
public static bool TryOpenExisting(string name, System.Security.AccessControl.SemaphoreRights rights, out System.Threading.Semaphore result);
static member TryOpenExisting : string * System.Security.AccessControl.SemaphoreRights * Semaphore -> bool
Public Shared Function TryOpenExisting (name As String, rights As SemaphoreRights, ByRef result As Semaphore) As Boolean
Paramètres
- name
- String
Nom de l’objet de synchronisation à partager avec d’autres processus. 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.
- rights
- SemaphoreRights
Combinaison au niveau du bit des valeurs d’énumération qui représentent l’accès de sécurité souhaité.
- result
- Semaphore
Lorsque cette méthode est retournée, contient un Semaphore objet qui représente le sémaphore nommé si l’appel a réussi ou null si l’appel a échoué. Ce paramètre est traité comme non initialisé.
Retours
true si le sémaphore nommé a été ouvert avec succès ; sinon, false. Dans certains cas, false peut être retourné pour les noms non valides.
Exceptions
name est une chaîne vide.
-ou-
.NET Framework uniquement : name est plus long que MAX_PATH (260 caractères).
name a la valeur null.
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. Pour certains noms non valides, la méthode peut retourner false à la place.
-ou-
Il y a eu une autre erreur. La HResult propriété peut fournir plus d’informations.
name est trop long. Les restrictions de longueur peuvent dépendre du système d’exploitation ou de la configuration.
Le sémaphore nommé existe, mais l’utilisateur n’a pas l’accès de sécurité requis pour l’utiliser.
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 objet de synchronisation du type demandé existe dans l’espace de noms, l’objet de synchronisation existant est ouvert. Si un objet de synchronisation n’existe pas dans l’espace de noms, ou si un objet de synchronisation d’un type différent existe dans l’espace de noms, false est retourné.
Pour créer le sémaphore système lorsqu’il n’existe pas déjà, utilisez l’un Semaphore des constructeurs qui ont un name paramètre.
Si vous ne savez pas si un sémaphore nommé existe, utilisez cette surcharge de méthode au lieu de la OpenExisting(String, SemaphoreRights) surcharge de méthode, ce qui lève une exception si le sémaphore n’existe pas.
Le rights paramètre doit inclure l’indicateur SemaphoreRights.Synchronize pour autoriser les threads à entrer dans le sémaphore et l’indicateur SemaphoreRights.Modify pour autoriser les threads à appeler la Release méthode.
Plusieurs appels à cette méthode qui utilisent la même valeur pour name ne pas nécessairement retourner le même Semaphore objet, même si les objets retournés représentent le même sémaphore système nommé.