Socket.DuplicateAndClose(Int32) Metodo

Definizione

Duplica il riferimento al socket per il processo di destinazione e chiude il socket per tale processo.

[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public System.Net.Sockets.SocketInformation DuplicateAndClose (int targetProcessId);
public System.Net.Sockets.SocketInformation DuplicateAndClose (int targetProcessId);

Parametri

targetProcessId
Int32

L'ID del processo di destinazione in cui viene creato un duplicato del riferimento al socket.

Restituisce

Il riferimento al socket da passare al processo di destinazione.

Attributi

Eccezioni

.NET Core in qualsiasi sistema operativo e .NET 5+ solo nel sistema operativo 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 duplicato.

Non chiamare più volte il Socket(SocketInformation) costruttore usando la stessa matrice di byte nell'argomento SocketInformation in ogni chiamata. In caso affermativo, 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 ArgumentNullException elemento nel processo di destinazione.

In .NET Core 1.0-3.1 questo metodo non è supportato.

In .NET 5+, DuplicateAndClose(Int32) è disponibile un supporto limitato in Windows. A differenza di .NET Framework, la proprietà è un NOP, pertanto il processo che crea il UseOnlyOverlappedIO socket non deve mai chiamare metodi asincroni nel socket. Una chiamata a un'operazione asincrona lo associa sempre a una porta di completamento di I/O del processo di creazione, che può causare l'attivazione di un'operazione ArgumentNullException nel processo di destinazione.

Si applica a

Prodotto Versioni
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1