Socket.DuplicateAndClose(Int32) 方法

定義

複製目標處理序的通訊端參考,並關閉這個處理序的通訊端。

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

參數

targetProcessId
Int32

建立重複通訊端參考的目標處理序 ID。

傳回

要傳遞至目標處理序的通訊端參考。

屬性

例外狀況

僅限 Unix 型 OS 上的任何 OS 和 .NET 5+ 上的 .NET Core:不支援目前的平臺。

targetProcessID 不是有效的處理序 ID。

-或-

複製通訊端參考失敗。

備註

目標進程應該使用 建 Socket(SocketInformation) 構函式來建立重複的套接字實例。

請勿在每個呼叫中使用自變數中的SocketInformation相同位元組陣列多次呼叫Socket(SocketInformation)建構函式。 如果您這麼做,您將會有多個具有相同基礎套接字的受控 Socket 實例,強烈建議您這麼做。

在 .NET Framework 上,如果建立套接字的進程使用異步方法,進程必須先將 UseOnlyOverlappedIO 屬性設定為 true。 否則,異步方法會將套接字系結至建立程式的 I/O 完成埠 ,這可能會導致 ArgumentNullException 在目標進程中擲回 。

在 .NET Core 1.0-3.1 上,不支援此方法。

在 .NET 5+ 上, DuplicateAndClose(Int32) Windows 上支援有限。 不同於 .NET Framework,UseOnlyOverlappedIO屬性是 NOP,因此建立套接字的程式絕對不能呼叫套接字上的異步方法。 對異步操作的呼叫一律會將它系結至建立程式的 I/O 完成埠 ,這可能會導致 ArgumentNullException 在目標進程中擲回 。

適用於