gpt4 book ai didi

.net - 如何知道 IDisposable 是否已处理?

转载 作者:行者123 更新时间:2023-12-04 06:35:03 24 4
gpt4 key购买 nike

如何知道 IDisposable 对象是否已被释放?

原因:
我收藏了GraphicsPath ( IDisposable ) 我使用 OnMouseMove .

有时我清除集合并处理对象,然后重新填充它。

我用少量(2-10)个点构建我的路径,但有时我看到集合中的路径有成百上千的点,这是不可能的。我想当我到达此代码时可能会处理路径...相关 question

最佳答案

一般来说,没有办法知道 Dispose已被称为一次性对象。但是,某些类型,例如 WinForms Control类型,请公开 IsDisposed 属性(property)或类似。

由于预期客户端代码首先确定性地控制可处置对象的“生命周期”(处置对象通常应该很快变得不可访问,因此人们不太可能想要处置某物但长时间保持对它的引用),很少需要这个功能。

像下面这样的代码很可能需要改变设计:

if(!myDisposable.IsDisposed)
myDisposable.DoSomething();

当然,如果你真的需要这个功能而类型没有提供,你可以自己手动实现。例如,您可以将其包装在 class DisposableWrapper<T> : IDisposable where T : Disposable 中。暴露一个 IsDisposed属性并期望您通过包装器的 Dispose 处理包装的对象方法,它做相关的簿记。

关于.net - 如何知道 IDisposable 是否已处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4968184/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com