ric*_*cki 2 c# garbage-collection finalizer
我有一些文件写在c#的临时位置.然后将它们呈现为pdf缩略图.当对象被销毁时我希望清理位置,所以在这种情况下使用解构器是否正常?
~Foo()
{
try
{
Directory.Delete(path, true);
}
catch (IOException ex)
{
Console.WriteLine("exception: " + ex.Message + " . from: Foo_Closing");
}
Run Code Online (Sandbox Code Playgroud)
即使它具有与C++析构函数相同的语法,这也是C#中的终结符,当对象在最终化时被垃圾收集时运行 - 这将对性能产生影响,因为GC必须运行单独的线程来运行所有终结器,为此你的对象实例将比必要的更长寿.
如果你不是必须的话,你不应该使用它 - 例外是当你必须处理资源时,在这种情况下你的类也应该实现IDisposable.这将允许您的类的消费者将其包装在一个using块中,这将调用Dispose()- 这是您应该拆除资源的地方.