共用方式為


HandleInheritability.Inheritable 的 AnonymousPipeServerStream.Dispose 行為

為避免資源流失,您的程式碼應該先將用戶端控制代碼傳遞至子處理序,再呼叫 AnonymousPipeServerStream.DisposeLocalCopyOfClientHandle() 方法。 已改善 AnonymousPipeServerStream.Dispose 的行為,降低未呼叫 DisposeLocalCopyOfClientHandle() 的使用者發生類似流失的機會。

先前的行為

先前,除非完全沒有公開控制碼,否則 AnonymousPipeServerStream 執行個體所擁有的用戶端控制碼不會由 AnonymousPipeServerStream.Dispose 處置。

新的行為

從 .NET 8 開始,如果用戶端控制碼不是使用 AnonymousPipeServerStream.ClientSafePipeHandle 屬性公開,則伺服器所擁有、為跨處理序通訊所建立的用戶端控制碼會由 AnonymousPipeServerStream.Dispose 處置。 (若要建立跨處理序通訊的伺服器,方法是將 HandleInheritability.Inheritable 傳遞至 AnonymousPipeServerStream(PipeDirection, HandleInheritability) 建構函式)

導入的版本

.NET 8 Preview 1

中斷性變更的類型

此變更為行為變更

變更原因

這項變更的引進是為了避免常見的資源流失。

如果伺服器是為跨處理序通訊所建立,在處置伺服器執行個體之後,請勿重複使用以 GetClientHandleAsString() 方法公開為字串的用戶端控制代碼。

受影響的 API