Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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.
Acción recomendada
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
- System.IO.Pipes.AnonymousPipeServerStream (en concreto,
AnonymousPipeServerStream.Dispose())