Compartilhar via


Do comportamento AnonymousPipeServerStream.Dispose para o HandleInheritability.Inheritable

Para evitar vazamentos de recursos, o código deve chamar o método AnonymousPipeServerStream.DisposeLocalCopyOfClientHandle() depois de passar o identificador do cliente para o processo filho. O comportamento AnonymousPipeServerStream.Dispose foi aprimorado para diminuir a chance de vazamentos semelhantes para usuários que não chamam DisposeLocalCopyOfClientHandle().

Comportamento anterior

Antes, o identificador do cliente pertencente à instância AnonymousPipeServerStream não era descartado por AnonymousPipeServerStream.Dispose, a menos que o identificador não fosse exposto.

Novo comportamento

Do .NET 8 em diante, o identificador do cliente pertencente a um servidor que foi criado para comunicação fora do processo será descartado por AnonymousPipeServerStream.Dispose se não for exposto usando a propriedade AnonymousPipeServerStream.ClientSafePipeHandle. (Você cria um servidor para comunicação fora do processo passando HandleInheritability.Inheritable para o construtor AnonymousPipeServerStream(PipeDirection, HandleInheritability)).

Versão introduzida

.NET 8 versão prévia 1

Tipo de alteração interruptiva

Esta é uma alteração comportamental.

Motivo da alteração

Esta alteração foi introduzida para evitar um vazamento de recurso comum.

Se um servidor for criado para comunicação fora do processo, não reutilize o identificador do cliente exposto como uma cadeia de caracteres por meio do método GetClientHandleAsString() depois que a instância do servidor for descartada.

APIs afetadas