问题标签 [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.
nhibernate - 为什么调用 NHibernate AdoTransaction 的终结器?
我正在分析单元和集成测试,我发现很多时间都花在了 NHibernate.Transaction.AdoTransaction 的终结器上——这意味着它没有得到正确处理。
我没有直接在代码中使用 AdoTransaction,所以它可能被 NHibernate 中的其他对象使用。知道我忘记处理什么了吗?
这是我的文本夹具:
sharepoint - Sharepoint SPDisposeCheck
SPDisposeCheck 实用程序提醒我有一个未正确处理的SPWeb.Add调用。正如您在下面看到的,典型的using(SPWeb NewWeb = webs.add(siteUrl ....)方法将不起作用,因为RunWithElevatedPrivileges会使return newWeb脱离上下文。
通过查看下面的newWeb = webs.Add()行,任何人都可以建议一种正确处理新 SPWeb 对象的方法吗?提前致谢。
c# - 在 Dispose 方法中关闭数据库连接是否正确?
我怀疑在我们的一个应用程序中使用的数据库连接并不总是关闭。我去看了代码,发现了一个DataProvider
有SqlConnection
对象的类。连接在此类的构造函数中打开并在其Dispose
方法中关闭(不要判断,我知道保持打开的连接是邪恶的,这不是我的代码,也不是问题的重点)。该Dispose
方法是这样实现的:
问题是:
它总是保证连接是关闭的吗?
这段代码对吗?
我认为应该_conn.Dispose()
调用 - 我是对的,它会影响不关闭连接(可能不会)吗?
.net - 如何处理从 Dispose 抛出的异常?
最近,我正在研究一些关于未处理对象的棘手错误。
我在代码中发现了一些模式。据报道,一些 m_foo 没有被释放,而 SomeClass 的所有实例似乎都被释放了。
我怀疑 Foo.Dispose 可能会引发异常,因此不会执行以下代码,因此不会释放 m_bar。
由于 Foo/Bar 可能来自第三方,因此不能保证不抛出异常。
如果只是用 try-catch 包装所有 Dispose 调用,代码将变得笨拙。
处理这个问题的最佳做法是什么?
c# - 是否有为 using 语句实现 IDisposable 的常见对象列表?
我想知道是否有某种备忘单,哪些对象与 using 语句相得益彰...... SQLConnection
,MemoryStream
等等。
更进一步,展示其他“拼图”会很棒,例如connection.Close()
在使用语句括号结束之前您应该如何实际调用。
有这样的东西存在吗?如果没有,也许我们应该做一个。
c# - 如何扩展 WinForm 的 Dispose 方法?
我收到了来自 FxCop 的警告:
“'RestartForm' 包含 IDisposable 类型的字段 'RestartForm.done':'ManualResetEvent'。将 'RestartForm' 上的 Dispose 方法更改为在此字段上调用 Dispose 或 Close。”
好的,我明白这意味着什么,为什么这是需要做的......除了System.Windows.Forms.Form
不允许你覆盖.Close()
or .Dispose()
,那该怎么办?目前我正在使用这个解决方案:
这适用于我的应用程序......但 FxCop 仍然显示此消息。我是否被覆盖了,我可以安全地忽略它,还是有另一种方式我应该这样做?
c# - 如果 using 语句引发异常,我如何处置 IDisposable 对象?
IDataReader
如果ExecuteReader
抛出异常,我如何确保在以下代码段中被处理?
对我来说,合成糖不调用 Dispose 是有道理的using
(因为没有实例可以调用它)。但是,我如何确定通常由实现 IDisposable 的类分配的稀缺资源将被释放?
.net - 处理动态创建的控件
我有一个 WinForms TabControl,我在运行时动态添加 TabPages。每个 TabPage 都包含一个 WebBrowser 控件。我还可以在运行时删除 TabPages。
我应该打扰 Dispose() 处理 TabPage 和/或 WebBrowser 控件吗?
在我看来,我至少应该 Dispose() WebBrowser 控件,因为它有点占用资源。
unmanaged - 处置模式:我如何知道哪些是托管的,哪些是非托管的?
阅读Dispose 模式,我看到文档反复提到“清理托管和非托管代码”。在该方法的规范实现中,我看到了专门用于清理托管对象与非托管对象的Dispose
特定流程(取决于是真还是假)。disposing
但是我,这个卑微的新手,知道哪些类型是托管的,哪些是非托管的吗?
c# - 有趣的事件“处置”行为
我注意到我们的 .NET WinForms 应用程序中的有趣行为。我们有一个添加了许多 mdi 子项的 mdi 表单。这些子窗体收听“广播”事件,该事件本质上是刷新自身的调用。该事件在基类中声明,并在子窗体中添加监听事件。
我注意到,即使这些子窗体已关闭,如果事件未在 Dispose() 方法中显式删除,事件仍会受到影响。
这背后的原因是什么?当然,如果表单已关闭,事件应该被分离/处理吗?是因为实际事件本身是在外部类中声明的吗?这就是我的假设。
洞察力将不胜感激。
(使用 C#、.NET 3.5)