问题标签 [dispose]

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 投票
1 回答
491 浏览

nhibernate - 为什么调用 NHibernate AdoTransaction 的终结器?

我正在分析单元和集成测试,我发现很多时间都花在了 NHibernate.Transaction.AdoTransaction 的终结器上——这意味着它没有得到正确处理。

我没有直接在代码中使用 AdoTransaction,所以它可能被 NHibernate 中的其他对象使用。知道我忘记处理什么了吗?

这是我的文本夹具:

0 投票
3 回答
1261 浏览

sharepoint - Sharepoint SPDisposeCheck

SPDisposeCheck 实用程序提醒我有一个未正确处理的SPWeb.Add调用。正如您在下面看到的,典型的using(SPWeb NewWeb = webs.add(siteUrl ....)方法将不起作用,因为RunWithElevatedPrivileges会使return newWeb脱离上下文。

通过查看下面的newWeb = webs.Add()行,任何人都可以建议一种正确处理新 SPWeb 对象的方法吗?提前致谢。

0 投票
2 回答
11616 浏览

c# - 在 Dispose 方法中关闭数据库连接是否正确?

我怀疑在我们的一个应用程序中使用的数据库连接并不总是关闭。我去看了代码,发现了一个DataProviderSqlConnection对象的类。连接在此类的构造函数中打开并在其Dispose方法中关闭(不要判断,我知道保持打开的连接是邪恶的,这不是我的代码,也不是问题的重点)。该Dispose方法是这样实现的:

问题是:
它总是保证连接是关闭的吗?
这段代码对吗?

我认为应该_conn.Dispose()调用 - 我是对的,它会影响不关闭连接(可能不会)吗?

0 投票
7 回答
23618 浏览

.net - 如何处理从 Dispose 抛出的异常?

最近,我正在研究一些关于未处理对象的棘手错误。

我在代码中发现了一些模式。据报道,一些 m_foo 没有被释放,而 SomeClass 的所有实例似乎都被释放了。

我怀疑 Foo.Dispose 可能会引发异常,因此不会执行以下代码,因此不会释放 m_bar。

由于 Foo/Bar 可能来自第三方,因此不能保证不抛出异常。

如果只是用 try-catch 包装所有 Dispose 调用,代码将变得笨拙。

处理这个问题的最佳做法是什么?

0 投票
9 回答
7196 浏览

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

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

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

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

0 投票
4 回答
40648 浏览

c# - 如何扩展 WinForm 的 Dispose 方法?

我收到了来自 FxCop 的警告:

“'RestartForm' 包含 IDisposable 类型的字段 'RestartForm.done':'ManualResetEvent'。将 'RestartForm' 上的 Dispose 方法更改为在此字段上调用 ​​Dispose 或 Close。”

好的,我明白这意味着什么,为什么这是需要做的......除了System.Windows.Forms.Form不允许你覆盖.Close()or .Dispose(),那该怎么办?目前我正在使用这个解决方案:

这适用于我的应用程序......但 FxCop 仍然显示此消息。我是否被覆盖了,我可以安全地忽略它,还是有另一种方式我应该这样做?

0 投票
4 回答
932 浏览

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

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

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

0 投票
3 回答
2261 浏览

.net - 处理动态创建的控件

我有一个 WinForms TabControl,我在运行时动态添加 TabPages。每个 TabPage 都包含一个 WebBrowser 控件。我还可以在运行时删除 TabPages。

我应该打扰 Dispose() 处理 TabPage 和/或 WebBrowser 控件吗?

在我看来,我至少应该 Dispose() WebBrowser 控件,因为它有点占用资源。

0 投票
5 回答
1604 浏览

unmanaged - 处置模式:我如何知道哪些是托管的,哪些是非托管的?

阅读Dispose 模式,我看到文档反复提到“清理托管和非托管代码”。在该方法的规范实现中,我看到了专门用于清理托管对象与非托管对象的Dispose特定流程(取决于是真还是假)。disposing

但是我,这个卑微的新手,知道哪些类型是托管的,哪些是非托管的吗?

0 投票
4 回答
2512 浏览

c# - 有趣的事件“处置”行为

我注意到我们的 .NET WinForms 应用程序中的有趣行为。我们有一个添加了许多 mdi 子项的 mdi 表单。这些子窗体收听“广播”事件,该事件本质上是刷新自身的调用。该事件在基类中声明,并在子窗体中添加监听事件。

我注意到,即使这些子窗体已关闭,如果事件未在 Dispose() 方法中显式删除,事件仍会受到影响。

这背后的原因是什么?当然,如果表单已关闭,事件应该被分离/处理吗?是因为实际事件本身是在外部类中声明的吗?这就是我的假设。

洞察力将不胜感激。

(使用 C#、.NET 3.5)