c# - 是否有必要关闭/处置 SafeHandles
问题描述
我在我的代码中使用 SafeHandles 并注意到它们有 Close 和 Dispose 方法。
这让我想知道 SafeHandles 是否由垃圾收集器处理并在使用后被丢弃。
例如,如果我有这样的句柄,我是否需要在使用完之后调用 .Dispose 或 .Close 方法。
var process Process.GetProcessesByName("notepad")[0];
var handle = process.SafeHandle;
解决方案
从文档:
在释放对 SafeHandle 对象的最后引用之前,始终调用 Close 或 Dispose 方法。否则,在垃圾收集器调用 SafeHandle 对象的 Finalize 方法之前,它正在使用的资源不会被释放。
推荐阅读
- django - 如何在 django 中上传之前预览图像
- python-3.x - 如何使用 aiter() 和 anext() 内置函数使用异步迭代器
- javascript - 有没有办法在使用 reactJs 加载屏幕时播放声音?
- java - 如何在 Java 中检索特定的对象字段?
- mysql - SQL抛出错误'on子句'中的未知列,但字段存在
- jquery - 完整日历 v4.3.1 中的 resourceGroupLabelDidMount 不起作用
- javascript - text|CSS|XPath 未找到元素“xpath=//input[@id="deliveryProviderleg0_transportProvider"]”
- npm - npm ci 只能安装具有现有 package-lock.json 或 npm-shrinkwrap.json 且 lockfileVersion >= 1 的软件包
- javascript - 我似乎无法弄清楚正则表达式
- android - 为 Android 签名配置指定自定义密钥库提供程序