HandleInheritability.Inheritable 的 AnonymousPipeServerStream.Dispose 行为

为了避免资源泄漏,代码应在将客户端句柄传递给子进程后调用 AnonymousPipeServerStream.DisposeLocalCopyOfClientHandle() 该方法。 已改进AnonymousPipeServerStream.Dispose的行为,以降低不调用DisposeLocalCopyOfClientHandle()的用户发生类似泄漏的可能性。

以前的行为

以前,AnonymousPipeServerStream 不会释放 AnonymousPipeServerStream.Dispose 实例拥有的客户端句柄,除非该句柄完全未公开。

新行为

从 .NET 8 开始,为进程外通信创建的服务器所拥有的客户端句柄如果未通过 AnonymousPipeServerStream.Dispose 属性公开,则由 AnonymousPipeServerStream.ClientSafePipeHandle 释放。 通过将HandleInheritability.Inheritable传递给AnonymousPipeServerStream(PipeDirection, HandleInheritability)构造函数,可以创建一个服务器用于进程外通信。

已引入的版本

.NET 8 预览版 1

破坏性变更的类型

此更改为行为更改

更改原因

引入了此更改以避免常见的资源泄漏。

如果服务器是为进程外部通信而创建的,请在释放服务器实例后,不要重复使用通过 GetClientHandleAsString() 方法以字符串形式公开的客户端句柄。

受影响的 API