最近,我用C#(一个小的类库)开发了动态对象,可以链接到python应用程序(如果命名不正确,请原谅)。我有一些IDisposable对象,它在构造函数中打开文件,然后在Dispose()
方法中将其关闭。文件需要在对象的整个生命周期中保持打开状态。在
我希望在最后一次实时引用之后自动调用Dispose()
方法,但我必须显式地调用它。在
import clr
clr.AddReference("MyLibrary")
from MyLibrary import DynamicObject
然后在我的代码中进一步使用它:
^{pr2}$此外,终结器也不被调用。有没有一种方法可以使用finalizer或Dispose()
方法而不显式地调用它们,或者CLR的垃圾收集器不知道python脚本中发生了什么?python如何通过python.net?在
谢谢:-)
Dispose
不会自动调用。它在那里,因此无论使用该类的任何人都可以在需要时使用它来释放非托管资源。finalizer将自动调用,但这将发生在垃圾回收器决定执行此操作时,而不是在实例超出范围后立即调用。在如果您想让管理您的
Dispose
调用稍微容易一点,您可以看看using statement,它由with
in Python支持。在相关问题 更多 >
编程相关推荐