Freigeben über


Socket.DuplicateAndClose(Int32) Methode

Definition

Dupliziert den Socketverweis für den Zielprozess und schließt den Socket für diesen Prozess.

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

Parameter

targetProcessId
Int32

Die ID des Zielprozesses, in dem ein Duplikat des Socketverweises erstellt wird.

Gibt zurück

Der Socketverweis, der an den Zielprozess übergeben werden soll.

Attribute

Ausnahmen

.NET Core unter jedem Betriebssystem und .NET 5+ nur unter Unix-basierten Betriebssystemen: Die aktuelle Plattform wird nicht unterstützt.

targetProcessID ist keine gültige Prozess-ID.

- oder -

Die Duplizierung des Socketverweises ist fehlgeschlagen.

Hinweise

Der Zielprozess sollte den Socket(SocketInformation) Konstruktor verwenden, um die doppelte Socket-instance zu erstellen.

Rufen Sie den Socket(SocketInformation) Konstruktor nicht mehrmals mit demselben Bytearray im SocketInformation Argument in jedem Aufruf auf. In diesem Fall verfügen Sie über mehrere verwaltete Socket Instanzen mit demselben zugrunde liegenden Socket, was dringend abgeraten wird.

Wenn der Prozess, der den Socket erstellt, auf .NET Framework asynchrone Methoden verwendet, muss der Prozess zuerst die UseOnlyOverlappedIO -Eigenschaft auf truefestlegen. Andernfalls bindet die asynchrone Methode den Socket an einen E/A-Abschlussport des Erstellungsprozesses, was dazu führen kann, dass ein ArgumentNullException im Zielprozess ausgelöst wird.

In .NET Core 1.0-3.1 wird diese Methode nicht unterstützt.

Für .NET 5 und höher, DuplicateAndClose(Int32) hat nur eingeschränkte Unterstützung unter Windows. Im Gegensatz zu .NET Framework ist die UseOnlyOverlappedIO Eigenschaft ein NOP, daher darf der Prozess, der den Socket erstellt, niemals asynchrone Methoden für den Socket aufrufen. Ein Aufruf eines asynchronen Vorgangs bindet ihn immer an einen E/A-Vervollständigungsport des Erstellungsprozesses, was dazu führen kann, dass ein ArgumentNullException im Zielprozess ausgelöst wird.

Gilt für: