Socket.DuplicateAndClose(Int32) 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.
Duplique la référence de socket pour le processus cible et ferme le socket pour ce processus.
public:
System::Net::Sockets::SocketInformation DuplicateAndClose(int targetProcessId);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public System.Net.Sockets.SocketInformation DuplicateAndClose (int targetProcessId);
public System.Net.Sockets.SocketInformation DuplicateAndClose (int targetProcessId);
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
member this.DuplicateAndClose : int -> System.Net.Sockets.SocketInformation
member this.DuplicateAndClose : int -> System.Net.Sockets.SocketInformation
Public Function DuplicateAndClose (targetProcessId As Integer) As SocketInformation
Paramètres
- targetProcessId
- Int32
ID du processus cible où un doublon de la référence de socket est créé.
Retours
Référence de socket à passer au processus cible.
- Attributs
Exceptions
.NET Core sur n’importe quel système d’exploitation et .NET 5+ sur le système d’exploitation Unix uniquement : la plateforme actuelle n’est pas prise en charge.
targetProcessID
n'est pas un ID de processus valide.
- ou -
La duplication de la référence de socket a échoué.
Remarques
Le processus cible doit utiliser le Socket(SocketInformation) constructeur pour créer le socket en double instance.
N’appelez pas le Socket(SocketInformation) constructeur plusieurs fois à l’aide du même tableau d’octets dans l’argument SocketInformation dans chaque appel. Dans ce cas, vous disposerez de plusieurs instances managées Socket avec le même socket sous-jacent, ce qui est fortement déconseillé.
Sur .NET Framework, si le processus de création du socket utilise des méthodes asynchrones, le processus doit d’abord définir la propriété sur UseOnlyOverlappedIOtrue
. Sinon, la méthode asynchrone lie le socket à un port d’achèvement des E/S du processus de création, ce qui peut entraîner la levée d’un ArgumentNullException dans le processus cible.
Sur .NET Core 1.0-3.1, cette méthode n’est pas prise en charge.
Sur .NET 5+, DuplicateAndClose(Int32) offre une prise en charge limitée sur Windows. Contrairement à .NET Framework, la UseOnlyOverlappedIO propriété est un NOP. Par conséquent, le processus de création du socket ne doit jamais appeler des méthodes asynchrones sur le socket. Un appel à une opération asynchrone la lie toujours à un port d’achèvement d’E/S du processus de création, ce qui peut entraîner la levée d’un ArgumentNullException dans le processus cible.