Socket.DuplicateAndClose(Int32) 方法

定義

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

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

參數

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 在目標進程中擲回 。

適用於

產品 版本
.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