Compartir a través de


Comportamiento de "AnonymousPipeServerStream.Dispose" para "HandleInheritability.Inheritable"

Para evitar pérdidas de recursos, el código debe llamar al AnonymousPipeServerStream.DisposeLocalCopyOfClientHandle() método después de pasar el identificador 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 no eliminaba el manipulador de cliente propiedad de la instancia AnonymousPipeServerStream.Dispose a menos que el manipulador no estuviera expuesto en absoluto.

Nuevo comportamiento

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 disruptivo

Este es un cambio de comportamiento.

Motivo del cambio

Este cambio se introdujo para evitar una pérdida de recursos común.

Si se creó un servidor para la comunicación entre procesos, no reutilice el identificador de cliente que se expone como cadena de texto mediante el método GetClientHandleAsString() después de que se haya eliminado la instancia del servidor.

Las APIs afectadas