Comportement d’AnonymousPipeServerStream.Dispose pour HandleInheritability.Inheritable
Pour éviter les fuites de ressources, votre code doit appeler la méthode AnonymousPipeServerStream.DisposeLocalCopyOfClientHandle() après avoir transmis le handle client au processus enfant. Le comportement de AnonymousPipeServerStream.Dispose
a été amélioré pour réduire le risque de fuites similaires pour les utilisateurs qui n’appellent pas DisposeLocalCopyOfClientHandle().
Comportement précédent
Auparavant, le handle client appartenant à l’instance AnonymousPipeServerStream n’était pas supprimé par AnonymousPipeServerStream.Dispose
, sauf si le handle n’était pas été exposé du tout.
Nouveau comportement
À compter de .NET 8, le handle client appartenant à un serveur créé pour la communication hors processus est supprimé par AnonymousPipeServerStream.Dispose
s’il n’est pas exposé à l’aide de la propriété AnonymousPipeServerStream.ClientSafePipeHandle. (Vous créez un serveur pour la communication hors processus en passant HandleInheritability.Inheritable au constructeur AnonymousPipeServerStream(PipeDirection, HandleInheritability).)
Version introduite
.NET 8 Préversion 1
Type de changement cassant
Ce changement est un changement de comportement.
Raison du changement
Cette modification a été introduite pour éviter une fuite de ressources courante.
Action recommandée
Si un serveur a été créé pour la communication hors processus, ne réutilisez pas le handle client exposé en tant que chaîne via la méthode GetClientHandleAsString() après la suppression de l’instance de serveur.
API affectées
- System.IO.Pipes.AnonymousPipeServerStream (plus précisément,
AnonymousPipeServerStream.Dispose()
)