Socket.DuplicateAndClose(Int32) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Duplica il riferimento al socket per il processo di destinazione e chiude il socket per questo processo.
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
Parametri
- targetProcessId
- Int32
ID del processo di destinazione in cui viene creato un duplicato del riferimento al socket.
Valori restituiti
Riferimento socket da passare al processo di destinazione.
- Attributi
Eccezioni
.NET Core in qualsiasi sistema operativo e .NET 5+ solo nel sistema operativo basato su Unix: la piattaforma corrente non è supportata.
targetProcessId non è un ID di processo valido.
oppure
La duplicazione del riferimento al socket non è riuscita.
Commenti
Il processo di destinazione deve usare il Socket(SocketInformation) costruttore per creare l'istanza del socket duplicata.
Non chiamare il Socket(SocketInformation) costruttore più volte usando la stessa matrice di byte nell'argomento SocketInformation in ogni chiamata. In questo caso, si avranno più istanze gestite Socket con lo stesso socket sottostante, che è fortemente sconsigliato.
In .NET Framework, se il processo che crea il socket usa metodi asincroni, il processo deve prima impostare la UseOnlyOverlappedIO proprietà su true. In caso contrario, il metodo asincrono associa il socket a una porta di completamento di I/O del processo di creazione, che può causare la creazione di un'eccezione ArgumentNullException nel processo di destinazione.
DuplicateAndClose(Int32) ha un supporto limitato in Windows. A differenza di .NET Framework, la UseOnlyOverlappedIO proprietà è un NOP, pertanto il processo che crea il socket non deve mai chiamare metodi asincroni nel socket. Una chiamata a un'operazione asincrona lo associa sempre a una porta di completamento I/O del processo di creazione, che può causare la creazione di un'eccezione ArgumentNullException nel processo di destinazione.