AnonymousPipeServerStream.Dispose comportamento para HandleInheritability.Inheritable
Para evitar vazamentos de recursos, seu código deve chamar o AnonymousPipeServerStream.DisposeLocalCopyOfClientHandle() método depois de passar o identificador do cliente para o processo filho. O comportamento do AnonymousPipeServerStream.Dispose
foi melhorado para diminuir a chance de vazamentos semelhantes para usuários que não ligam DisposeLocalCopyOfClientHandle().
Comportamento anterior
Anteriormente, o identificador do cliente de propriedade da AnonymousPipeServerStream instância não era descartado AnonymousPipeServerStream.Dispose
, a menos que o identificador não fosse exposto.
Novo comportamento
A partir do .NET 8, o identificador de cliente de propriedade de um servidor que foi criado para comunicação fora do procedimento é descartado por AnonymousPipeServerStream.Dispose
se não for exposto usando a AnonymousPipeServerStream.ClientSafePipeHandle propriedade. (Você cria um servidor para comunicação fora do proc passando HandleInheritability.Inheritable para o AnonymousPipeServerStream(PipeDirection, HandleInheritability) construtor.)
Versão introduzida
.NET 8 Visualização 1
Tipo de mudança de rutura
Esta mudança é uma mudança comportamental.
Razão para a alteração
Esta alteração foi introduzida para evitar uma fuga comum de recursos.
Ação recomendada
Se um servidor foi criado para comunicação fora do processo, não reutilize o identificador do cliente exposto como uma cadeia de caracteres por meio do GetClientHandleAsString() método depois que a instância do servidor tiver sido descartada.
APIs afetadas
- System.IO.Pipes.AnonymousPipeServerStream (especificamente,
AnonymousPipeServerStream.Dispose()
)