„AnonymousPipeServerStream.Dispose“-Verhalten für „HandleInheritability.Inheritable“
Um Ressourcenverluste zu vermeiden, sollte Ihr Code die AnonymousPipeServerStream.DisposeLocalCopyOfClientHandle()-Methode aufrufen, nachdem das Clienthandle an den untergeordneten Prozess übergeben wurde. Das Verhalten von AnonymousPipeServerStream.Dispose
wurde verbessert, um die Wahrscheinlichkeit ähnlicher Verluste für Benutzer zu verringern, die DisposeLocalCopyOfClientHandle() nicht aufrufen.
Vorheriges Verhalten
Zuvor wurde das Clienthandle, das der AnonymousPipeServerStream-Instanz gehört, nicht von AnonymousPipeServerStream.Dispose
verworfen, es sei denn, das Handle wurde gar nicht verfügbar gemacht.
Neues Verhalten
Ab .NET 8 wird das Clienthandle, das einem Server gehört, der für die Out-of-Proc-Kommunikation erstellt wurde, von AnonymousPipeServerStream.Dispose
verworfen, wenn es nicht mithilfe der AnonymousPipeServerStream.ClientSafePipeHandle-Eigenschaft verfügbar gemacht wird. (Einen Server für die Out-of-Proc-Kommunikation erstellen Sie, indem Sie HandleInheritability.Inheritable an den AnonymousPipeServerStream(PipeDirection, HandleInheritability)-Konstruktor übergeben.)
Eingeführt in Version
.NET 8 Preview 1
Typ des Breaking Changes
Diese Änderung ist eine Verhaltensänderung.
Grund für die Änderung
Diese Änderung wurde eingeführt, um häufige Ressourcenverluste zu vermeiden.
Empfohlene Maßnahme
Wenn ein Server für die Out-of-Proc-Kommunikation erstellt wurde, verwenden Sie das Clienthandle nicht wieder, das über die GetClientHandleAsString()-Methode als Zeichenfolge verfügbar gemacht wird, nachdem die Serverinstanz verworfen wurde.
Betroffene APIs
- System.IO.Pipes.AnonymousPipeServerStream (insbesondere
AnonymousPipeServerStream.Dispose()
)