Comportamiento AnonymousPipeServerStream.Dispose para HandleInheritability.Inheritable
Para evitar pérdidas de recursos, el código debe llamar al método AnonymousPipeServerStream.DisposeLocalCopyOfClientHandle() después de pasar el manipulador de cliente al proceso secundario. El comportamiento de AnonymousPipeServerStream.Dispose
se ha mejorado para reducir la probabilidad de fugas similares para los usuarios que no llaman a DisposeLocalCopyOfClientHandle().
Comportamiento anterior
Anteriormente, AnonymousPipeServerStream.Dispose
no eliminaba el manipulador de cliente propiedad de la instancia AnonymousPipeServerStream a menos que el manipulador no estuviera expuesto en absoluto.
Comportamiento nuevo
A partir de .NET 8, AnonymousPipeServerStream.Dispose
elimina el manipulador de cliente que pertenece a un servidor que se creó para la comunicación fuera de proceso si no se expone mediante la propiedad AnonymousPipeServerStream.ClientSafePipeHandle. (Cree un servidor para la comunicación fuera del proceso pasando HandleInheritability.Inheritable al constructor AnonymousPipeServerStream(PipeDirection, HandleInheritability)).
Versión introducida
.NET 8 Preview 1
Tipo de cambio importante
Este es un cambio de comportamiento.
Motivo del cambio
Este cambio se introdujo para evitar una pérdida de recursos común.
Acción recomendada
Si se creó un servidor para la comunicación fuera del proceso, no reutilice el manipulador de cliente que se expone como una cadena mediante el método GetClientHandleAsString() después de eliminar la instancia del servidor.
API afectadas
- System.IO.Pipes.AnonymousPipeServerStream (de manera específica,
AnonymousPipeServerStream.Dispose()
)