Socket.DuplicateAndClose(Int32) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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 true
festlegen. 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.