Udostępnij przez


Zachowanie AnonymousPipeServerStream.Dispose dla elementu HandleInheritability.Inheritable

Aby uniknąć wycieków zasobów, kod powinien wywołać metodę AnonymousPipeServerStream.DisposeLocalCopyOfClientHandle() po przekazaniu dojścia klienta do procesu podrzędnego. Zachowanie AnonymousPipeServerStream.Dispose zostało ulepszone, aby zmniejszyć prawdopodobieństwo podobnych przecieków dla użytkowników, którzy nie wywołują DisposeLocalCopyOfClientHandle().

Poprzednie zachowanie

Wcześniej dojście klienta należące do AnonymousPipeServerStream wystąpienia nie zostało usunięte AnonymousPipeServerStream.Dispose , chyba że dojście nie zostało w ogóle ujawnione.

Nowe zachowanie

Począwszy od platformy .NET 8, dojście klienta należące do serwera utworzonego do komunikacji międzyprocesowej jest usuwane przez AnonymousPipeServerStream.Dispose , jeśli nie jest udostępnione za pomocą właściwości AnonymousPipeServerStream.ClientSafePipeHandle. (Serwer na potrzeby komunikacji poza proc tworzy się, przekazując HandleInheritability.Inheritable do konstruktora AnonymousPipeServerStream(PipeDirection, HandleInheritability) ).

Wersja wprowadzona

.NET 8 (wersja zapoznawcza 1)

Typ zmiany przełamującej

Ta zmiana jest zmianą behawioralną.

Przyczyna zmiany

Wprowadzono tę zmianę, aby uniknąć typowego wycieku zasobów.

Jeśli serwer został utworzony na potrzeby komunikacji międzyprocesowej, nie używaj ponownie dojścia klienta, który jest uwidoczniony jako ciąg znaków za pomocą metody GetClientHandleAsString() po usunięciu wystąpienia serwera.

Interfejsy API, których dotyczy problem