什么时候不能在 Finalizer/IDisposable 上使用 SafeHandle?

ill*_* mg 5 c# dispose idisposable finalizer

当看到整个 finalizer/IDisposable 问题时,通常会看到,在所有冗长的描述之后,最后都会有“哈哈,我说的实际上没用,你应该使用 SafeHandle 代替再见”的意思!” 所以我想知道在什么情况下 SafeHandle 不适合,以至于你不得不求助于终结器/IDisposable 旧方法?

Han*_*ant 5

显然,当您包装的非托管资源不是通过句柄获取时。这很罕见,但并非闻所未闻。一个例子是用 C++/CLI 代码编写包装器,通常用于包装本机 C++ 类。那么资源就是内存。不受管理的那种。

尽管如此,您可以将整个职业生涯都花在编写托管代码上而不编写终结器。终结器属于框架类。