首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.Net SafeHandle -任务和示例

ASP.Net SafeHandle -任务和示例
EN

Stack Overflow用户
提问于 2022-02-10 15:54:08
回答 1查看 30关注 0票数 -1

我想了解如何使用非托管资源,以及何时需要SafeHandle类。当你可以说:“哦,这里我需要SafeHandle类!”

如有文章、例子、解释的链接,我将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2022-02-10 15:56:51

我认为MSDN的定义非常清楚:

SafeHandle类提供句柄资源的关键终结,防止垃圾回收过早地回收句柄,并防止句柄被回收以引用非预期的非托管对象。在.NET框架2.0版本之前,所有操作系统句柄只能封装在IntPtr托管包装器对象中。 SafeHandle类包含一个终结器,它确保句柄关闭并保证运行,即使在意外的AppDomain卸载时,当主机可能不信任AppDomain状态的一致性时也是如此。 有关使用SafeHandle的好处的更多信息,请参见安全句柄和关键终结。 这个类是抽象的,因为您不能创建泛型句柄。要实现SafeHandle,必须创建一个派生类。要创建SafeHandle派生类,必须知道如何创建和释放操作系统句柄。这个过程对于不同的句柄类型是不同的,因为有些使用CloseHandle,而另一些使用更具体的方法,例如UnmapViewOfFile或FindClose。因此,必须为每个操作系统句柄类型创建一个派生类SafeHandle;例如MySafeRegistryHandle、MySafeFileHandle和MySpecialSafeFileHandle。其中一些派生类是预先编写的,并在Microsoft.Win32.SafeHandles命名空间中为您提供。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71068188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档