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, bei dem ein Duplikat des Socketverweises erstellt wird.

Gibt zurück

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

Attribute

Ausnahmen

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

targetProcessId ist keine gültige Prozess-ID.

- oder -

Fehler bei der Duplizierung des Socketverweises.

Hinweise

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

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

Wenn beim Erstellen des Sockets in .NET Framework asynchrone Methoden verwendet werden, 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 Auslösen im Zielprozess ausgelöst wird.

DuplicateAndClose(Int32) hat eingeschränkte Unterstützung für Windows. Im Gegensatz zu .NET Framework ist die UseOnlyOverlappedIO Eigenschaft ein NOP, daher darf der Prozess zum Erstellen des Sockets 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 Auslösen im Zielprozess ausgelöst wird.

Gilt für: