AnonymousPipeServerStream.Dispose-beteende för HandleInheritability.Inheritable
För att undvika resursläckor bör koden anropa AnonymousPipeServerStream.DisposeLocalCopyOfClientHandle() metoden efter att klienthandtaget har överförts till den underordnade processen. Beteendet AnonymousPipeServerStream.Dispose
för har förbättrats för att minska risken för liknande läckor för användare som inte anropar DisposeLocalCopyOfClientHandle().
Tidigare beteende
Tidigare var klienthandtaget som ägs av instansen AnonymousPipeServerStream inte bortskaffat av AnonymousPipeServerStream.Dispose
om inte handtaget inte exponerades alls.
Nytt beteende
Från och med .NET 8 bortskaffas AnonymousPipeServerStream.Dispose
klienthandtaget som ägs av en server som har skapats för kommunikation som inte är tillgänglig om den inte exponeras med hjälp AnonymousPipeServerStream.ClientSafePipeHandle av egenskapen. (Du skapar en server för kommunikation som inte är tillgänglig genom att skicka HandleInheritability.Inheritable till AnonymousPipeServerStream(PipeDirection, HandleInheritability) konstruktorn.)
Version introducerad
Förhandsversion 1 av .NET 8
Typ av icke-bakåtkompatibel ändring
Den här ändringen är en beteendeförändring.
Orsak till ändringen
Den här ändringen infördes för att undvika en vanlig resursläcka.
Rekommenderad åtgärd
Om en server har skapats för inaktiv kommunikation ska du inte återanvända klienthandtaget som exponeras som en sträng via GetClientHandleAsString() metoden när serverinstansen har tagits bort.
Berörda API:er
- System.IO.Pipes.AnonymousPipeServerStream (närmare bestämt
AnonymousPipeServerStream.Dispose()
)