问题标签 [idisposable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
9 回答
7196 浏览

c# - 是否有为 using 语句实现 IDisposable 的常见对象列表?

我想知道是否有某种备忘单,哪些对象与 using 语句相得益彰...... SQLConnectionMemoryStream等等。

更进一步,展示其他“拼图”会很棒,例如connection.Close()在使用语句括号结束之前您应该如何实际调用。

有这样的东西存在吗?如果没有,也许我们应该做一个。

0 投票
2 回答
252 浏览

vb.net - 我可以在不需要引用每个资源的情况下处置这些非托管资源吗?

我有一个类 bMainframe,它管理与 4 个不同大型机的连接。它允许以特定方式打开相同的底层非托管库,并且一次可以连接多个大型机。每个库都有自己的非托管大型机连接资源的处置代码。包装器还具有调用各个大型机连接的处理代码的代码。

如果某人的项目没有使用所有 4 个大型机,而是调用包装器上的处置,这会导致错误。(FileLoadException 无法加载 4 个托管大型机的程序集 X)因为该处置代码检查 4 个中的哪一个不是空的/空的。即使没有任何内容/null,这也会导致 .net 尝试加载程序集并崩溃。

外包装中的处理代码是否有用或必要?有没有办法检查一个类型的程序集是否已加载,但不会触发.net 加载类型/程序集?

我修改了下面的代码以阻止 fileloadexception,但我不认为这是最好的方法。

0 投票
5 回答
4815 浏览

c# - 哪个更好,何时:在 C# 中的 IDisposable 上使用语句或调用 Dispose()?

假设我有以下内容:

为什么不直接执行以下操作并丢失几个花括号?:

感谢您的建议!

0 投票
6 回答
768 浏览

c# - 有没有办法确保在 IDisposable 类的反序列化期间异常调用 Dispose()?

在 c# 中,我使用以下语句反序列化实现 IDisposable 的类型的对象(仅用于说明)。

afaik,序列化程序尝试使用默认 ctor 构造对象并随后分配所有公共属性和字段。如果出现任何异常,我不会接触到构造的对象。

所以,我的问题是是否有任何方法可以确保自动释放已分配的资源。我知道 Dispose(bool disposing)-'pattern' 实现了显式终结器,但我更愿意明确地释放任何资源(即确定性地)。

0 投票
2 回答
912 浏览

.net-2.0 - XmlReader 和 IDisposable

也许我的眼睛在愚弄我,但是在 .NET 2.0 中,XmlReader 是如何实现 Dispose 但没有 Dispose() 方法的呢?我看到它有 Dispose(bool),但不是无参数重载。

0 投票
5 回答
6062 浏览

c# - 我们是否需要在 using 块中关闭 C# BinaryWriter 或 BinaryReader?

有这个代码:

我们需要关闭 BinaryWriter 吗?如果不是,为什么?

0 投票
4 回答
1171 浏览

c# - 在 IDisposable 模式中,基类是否应该允许派生类共享其已处置标志?

我目前正在修复 ac# 代码库,它没有很好的 Dispose 使用模式。

它是一个大型代码库,它是一个资源要求高的代码库,它在低级别使用了许多自定义的非托管 c++ 库。

我对处置模式有很好的了解。我花了一些时间来理解我认为关于这个问题的黄金标准文章:Joe Duffy 的处置文章

为了尽量减少代码重复,我们一直在考虑一些 dispose 辅助类,所以我的问题是:

如果一个基类实现了一个标准的 Dispose 模式,它是否应该允许共享它的 Dispose 标志,即。标记为受保护?

为了澄清,我的意思是在继承层次结构中是否应该只有一个布尔状态来定义对象实例是否已被释放,或者在继承阶梯的每个步骤中是否应该有一个私有布尔值?

MSDN 和上述链接中的示例在每个级别都设置了一个标志,但从未解释其背后的原因。我对这个问题有两种看法,你的想法和理由是什么?

0 投票
3 回答
1400 浏览

visual-studio-2008 - 当我忘记处置 IDisposable 对象时,Visual Studio 可以警告我吗?

是否可以将 Visual Studio 2008 配置为在我忘记处置实现 IDisposable 的对象时向我发出警告?

0 投票
4 回答
932 浏览

c# - 如果 using 语句引发异常,我如何处置 IDisposable 对象?

IDataReader如果ExecuteReader抛出异常,我如何确保在以下代码段中被处理?

对我来说,合成糖不调用 Dispose 是有道理的using(因为没有实例可以调用它)。但是,我如何确定通常由实现 IDisposable 的类分配的稀缺资源将被释放?

0 投票
7 回答
21253 浏览

c# - 我是否正确实施了 IDisposable?

此类使用 aStreamWriter并因此实现IDisposable.

}

当前的实现有什么问题吗?即,我必须FileStream手动释放底层吗?Dispose(bool)写对了吗?