zac*_*fix 99
不完全是析构函数,但这是你将如何做到这一点:
class StaticClass
{
static StaticClass() {
AppDomain.CurrentDomain.ProcessExit +=
StaticClass_Dtor;
}
static void StaticClass_Dtor(object sender, EventArgs e) {
// clean it up
}
}
Run Code Online (Sandbox Code Playgroud)
Tod*_*son 62
这是最好的方法(参考:https://stackoverflow.com/a/256278/372666)
public static class Foo
{
private static readonly Destructor Finalise = new Destructor();
static Foo()
{
// One time only constructor.
}
private sealed class Destructor
{
~Destructor()
{
// One time only destructor.
}
}
}
Run Code Online (Sandbox Code Playgroud)
Meh*_*ari 36
不,没有.
据推测,静态析构函数将在执行过程结束时运行.当进程终止时,与其关联的所有内存/句柄都将被操作系统释放.
如果你的程序应该在执行结束时执行特定的操作(比如事务数据库引擎,刷新它的缓存),那么正确处理它将比在正常执行结束时运行的一段代码要困难得多.这个过程.您必须手动处理崩溃和意外终止进程,并尝试在下次运行时恢复."静态析构函数"概念无济于事.
Nei*_*ght 16
不,没有.你可以做的最接近的事设置了事件处理程序的DomainUnload事件上AppDomain,有执行的清理.