垃圾收集器会为我调用 IDisposable.Dispose 吗?

2024-03-17

互联网I一次性图案 http://msdn.microsoft.com/en-us/library/system.idisposable.aspx implies如果您编写一个终结器并实现 IDisposable,则您的终结器需要显式调用 Dispose。 这是合乎逻辑的,也是我在极少数需要终结器的情况下所做的事情。

但是,如果我这样做会发生什么:

class Foo : IDisposable
{
     public void Dispose(){ CloseSomeHandle(); }
}

并且不要实现终结器或任何东西。框架会为我调用 Dispose 方法吗?

是的,我意识到这听起来很愚蠢,所有的逻辑都暗示它不会,但我脑子里总是有两件事让我不确定。

  1. 几年前有人曾经告诉我,它实际上会做到这一点,而且那个人在“了解他们的东西”方面有着非常可靠的记录。

  2. 编译器/框架会根据您实现的接口执行其他“神奇”的事情(例如:foreach、扩展方法、基于属性的序列化等),因此这也可能是“神奇的”是有道理的。

虽然我读过很多关于它的东西,并且有很多暗示的东西,但我从来没有找到一个确定的这个问题的答案是“是”或“否”。


.Net 垃圾收集器在垃圾收集时调用对象的 Object.Finalize 方法。经过default这确实nothing如果您想释放额外的资源,则必须覆盖它。

Dispose 不会自动调用,必须调用明确性如果要释放资源,例如在“using”或“tryfinally”块内,则调用

see http://msdn.microsoft.com/en-us/library/system.object.finalize.aspx http://msdn.microsoft.com/en-us/library/system.object.finalize.aspx了解更多信息

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

垃圾收集器会为我调用 IDisposable.Dispose 吗? 的相关文章

  • 在 Windows 窗体应用程序 (.net) 中单击图像的 X/Y 坐标

    有没有办法知道在 FORMS 应用程序中单击了哪些 x y 坐标 看看鼠标事件参数 http msdn microsoft com en us library system windows input mouseeventargs memb
  • 转换BitmapImage后内存未释放

    我遇到以下 C 测试 代码的问题 public static void TestBitmap2ByteArray BitmapImage bitmap JpegBitmapEncoder encoder new JpegBitmapEnco
  • int -> int list 与类型 int -> IEnumerable<'a> 不兼容

    Given open System Linq 这是一个可以接受的表达方式 2 3 4 SelectMany fun n gt 1 n 但这不是 2 3 4 SelectMany fun n gt 1 n 错误消息显示 int gt int
  • 在 .NET 中使用 Settings.settings 文件时,配置实际存储在哪里?

    在 NET 中使用 Settings settings 文件时 配置实际存储在哪里 我想删除保存的设置以返回到默认状态 但找不到它的存储位置 有什么想法吗 这取决于您选择的设置是在 用户 范围还是 应用程序 范围 用户范围 用户范围设置存储
  • WinApi:获取 COM 表单的控件名称

    我想用 Net 框架替换我当前的 UI 自动化工具 QTP 我需要测试 VB6 COM 应用程序 框架的基础之一是使用表单名称 到目前为止 我未能找到使用 Win API 获取这些数据的方法 该解决方案只有一个约束 即该解决方案必须依赖 N
  • 使用 F5 时,finally 似乎没有在 C# 控制台应用程序中执行

    int i 0 try int j 10 i catch IOException e finally Console WriteLine In finally Console ReadLine 在VS2008中按F5时 finally块似乎
  • 为什么 IsAssignableFrom() 不适用于 int 和 double?

    这是错误的 typeof double IsAssignableFrom typeof int 这是错误的 typeof int IsAssignableFrom typeof double 但这有效 double a 1 0 int b
  • 字典 API(词汇)[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有人知道一个好的 NET 字典 API 吗 我对含义不感兴趣 而是我需要能够以多种不同的方式查询单词 返
  • 如何将智能感知添加到我的应用程序中?

    我们的一款产品拥有一种专有的宏语言 通过我们的 Windows 软件进行编辑 我想添加智能感知 但我不知道如何去做 至少不完全重新发明轮子 是否有任何示例代码或第 3 方包至少可以让我开始 它不一定是免费的 该应用程序使用 NET 用 C
  • C# Julian 日期解析器

    我在电子表格中有一个单元格 它是 Excel 中的日期对象 但当它来自 C1 的 xls 类时 它会变成双精度型 类似于 2009 年 1 月 7 日的 39820 0 我读到这是儒略日期格式 有人可以告诉我如何在 C 中将其解析回 Dat
  • Sitecore - 隐藏功能区中的按钮

    我为特定内容项创建了上下文功能区 我有两个按钮 可以将项目 升级 或 降级 到某一类别 该部分只能有一个 是否可以根据某种隐藏代码中的内容状态隐藏其中一个按钮 我了解如何链接到 Click 事件 但我想知道是否有某种加载事件可供自定义功能区
  • 更换 I 过滤器

    我目前正在使用 IFilters 从各种文件 word excel tiff pdf 等 中提取文本 据我所知 IFilter 已在 Windows 8 中停止使用 是否有人对如何在不安装本机应用程序的情况下提取文本有任何建议 如果有什么用
  • 找不到 Microsoft.Office.Interop Visual Studio

    我正在开发一个使用 C 发送电子邮件的应用程序 该应用程序将能够使用邮件模板等 问题是我无法找到任何 Office Interop 引用 这意味着我无法使用 Outlook 我的计算机上安装了 Office 但我也尝试从此链接安装 PIAh
  • 如何获取Winforms窗体标题栏高度的大小?

    因此 如果它是工具窗口或可最小化的表单 我希望能够以编程方式获取其高度 这可能吗 如果是这样怎么办 您可以使用以下方法确定工具窗口和普通表单的标题栏高度 Rectangle screenRectangle this RectangleToS
  • C# - 方法必须有返回类型

    我在调用 C 中的方法时遇到问题 不断收到消息 方法 计算 必须有返回类型 using System Diagnostics namespace WindowsFormsApplication1 public partial class F
  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • 枚举扩展方法

    在vs2008中 是否可以编写适用于任何枚举的扩展方法 我知道您可以针对特定枚举编写扩展方法 但我希望能够使用单个扩展方法对每个枚举进行处理 这可能吗 是的 只需针对基础进行编码Enum类型 例如 public static void So
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况

随机推荐

  • WordPress API:添加/删除帖子上的标签

    我知道这似乎是一个简单的操作 但我找不到任何资源或文档来解释如何使用帖子 ID 以编程方式向帖子添加和删除标签 下面是我正在使用的示例 但它似乎覆盖了所有其他标签 function addTerm id tax term term id i
  • Bootstrap 3:防止模态内部的模态每次触发(hidden.bs.modal)

    我有一个模态位于另一个模态中 并且我设法使内部模态关闭而不影响另一个模态 问题是 当第二个模式关闭时 它会触发 hidden bs modal 事件本身和第一个模型
  • Android 模拟器不显示印地语字体

    我在模拟器上将语言环境更改为 hi IN 当我在模拟器上启动应用程序 甚至主屏幕 时 我看到的只是让人想起 我不知道如何渲染此字体 的框 任何关于为什么会发生这种情况以及如何消除这种情况的意见都是非常受欢迎的 我需要显示印地语字体以测试我的
  • 由于协议不匹配而阻止 iframe

    我正在尝试将值从父窗口发送到按钮上的框架click事件 但它在控制台上显示错误 未捕获的安全错误 阻止了具有来源的帧 http 本地主机 53838 http localhost 53838 访问来源为 null 的框架 请求访问的帧具有
  • 有一个用于反应本机选择器的占位符

    有没有办法在用户单击它之前显示反应本机选择器的占位符 我们的想法是有一个选择器显示 国籍 一旦您单击并选择您的国家 地区 它就会呈现该国家 地区 我想在不将 国籍 作为选择器中的可用选项的情况下执行此操作 将第一个孩子放置为
  • 在 WooCommerce 中的简短描述之前显示自定义产品字段

    在简短描述之前 我在 WooCommerce 中添加新字段时遇到问题 我在中使用了脚本functions php我的新自定义字段显示正确 但是 使用脚本时简短描述消失 新字段显示正常 我可以编辑产品页面上字段的内容 但无法删除它 它始终是最
  • Ubuntu 10.1下如何识别多个USB串口适配器

    我正在 Ubuntu 10 1 下从多个相同的 USB 串行适配器读取数据 有时 它们的 dev tty 路径会发生变化 例如 如果在启动时连接了其他 USB 设备 我需要一种通过任何此类更改重复引用同一适配器的方法 据 udevadm 称
  • XInclude 的替代方案

    据我所知没有支持XInclude在 net中 我想利用同样的机制来分层组织 XML 配置文件 我的意思是我有一个引用特定 Xml 文件的顶级 XML 配置文件 我的配置是专用于一个特定模块的一组配置 我该怎么办呢 或者也许为什么我不应该这样
  • 如何在 Azure DevOps 中为 Node.js Web 应用创建发布管道?

    我想通过创建发布管道 在 Azure DevOps 上启用 Node js 应用程序的持续部署 我怎样才能做到这一点 当我写一年前的答案时 Azure DevOps 没有用于构建管道的 Web 应用程序部署任务 因此必须使用发布管道来完成
  • Rebol 中的“reword”功能是什么以及如何使用它?

    我看到有人提到reword今天可以使用 但是它的文档非常简短 它看起来像 shell 脚本环境变量替换 或者可能是正则表达式替换 但有所不同 我该如何使用这个功能以及我会遇到什么样的问题 这里有龙 The rewordfunction 是一
  • 限制 top 命令仅在命令行上显示前 X 个进程 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我不确定为什么没有选项top命令执行此操作 因为这似乎是一个自然的请求 如果我通过管道输出top to head 然后列表不会更新 并且我
  • 在 Twitter 上分享时 GIF 没有动画

    我正在创建动画 GIF 文件NSArray of UIImage 并将其保存在NSDocumentDirectory以及 iPhone 相册中 我面临的问题是 当我在电子邮件编辑器或 iMessage 中打开保存的 GIF 时 它的动画效果
  • 'str = new String(bytes, "UTF8") ' 和 'bytes = str.getBytes("UTF8")' 中的字节值不同

    我可以看到它们与我创建字符串所用的字节不同 我使用 AES CBC PKCS5Padding 来获取字符串 public static void main String args try int randomNumber CNStation
  • python-qgis版本信息

    有人可以告诉我如何获取版本信息python qgis http docs qgis org testing en docs pyqgis developer cookbook intro html 我已经尝试了所有常规方法foo versi
  • 在 Heroku 上部署 PeerJS 服务器

    我的 PeerJS 服务器有问题 我从这里使用了 部署到 Heroku 按钮 https github com peers peerjs server https github com peers peerjs server 我不知道如何连
  • 如何在Python中导入matplotlib

    我是Python新手 正在研究一个图形问题 我想绘制这个图形以更好地理解它 我了解到应该为此导入 matplotlib 模块 但我不知道如何将其添加到项目中 我是一名 java 开发人员 这非常类似于将 jar 添加到类路径中 当我尝试做时
  • Log4j2 模拟 Appender

    我有一堂课 其中我获取了所有属性 并在登录之前隐藏了它们的密码 Override public void afterPropertiesSet throws Exception Properties loadedProperties thi
  • 如何在 UML 类图中表示回调

    我有一个界面说 Interface ICallback public void informFunction 我有一堂课说 Class Implementation implements ICallback public Implement
  • Chart.js 混合图表的工具提示悬停自定义

    我在尝试使用 Chart js 自定义混合图表的悬停工具提示时遇到了一些问题 我有一个条形图显示某种产品的总利润 还有一个折线图显示该某种产品的总量 当我将鼠标悬停在条形图上时 我希望工具提示显示如下内容 Total profit 1399
  • 垃圾收集器会为我调用 IDisposable.Dispose 吗?

    互联网I一次性图案 http msdn microsoft com en us library system idisposable aspx implies如果您编写一个终结器并实现 IDisposable 则您的终结器需要显式调用 Di