【发布时间】:2017-11-17 19:02:52
【问题描述】:
我想从静态类中释放非托管资源。
我尝试了什么: 我已将课程设置为单例而不是静态的。 并添加了一个析构函数。但是非托管资源没有立即释放。因为析构函数不会像 dispose 那样被立即调用。
我没有实现 Idisposable,因为我无法从用户类调用 dispose 方法。
【问题讨论】:
-
为什么静态类需要非托管资源?什么样的物体?
-
我不确定有一个需要在单例或静态类中处理的非托管资源是一个好的设计......
-
“我已将类设为单例而不是静态。并添加了一个析构函数。但非托管资源没有立即释放。因为析构函数不会像 dispose 那样立即被调用” i> 我不明白。为什么你期望它立即被处理掉?每个静态成员(如单例)在卸载应用程序域时被释放,而不是在你完成它时。我很确定你的静态类应该在它们的静态方法中创建这些非托管资源,并注意它们会立即被释放(例如,使用
using-statement)。 -
这是一个 X/Y 问题。您的主要方法是错误的,现在您希望我们修复一个小细节。