2011-04-20 17 views

回答

1

如果他们已经被处置掉了,你是否真的需要在终结器中处理它们?
或者相反:你是不是可以通过IDisposable模式来处理它们?

即使是你抢坚持为您的应用程序的生命周期的资源,你仍然可以把它变成一个使用:

static void Main() 
{ 
    using(var yourResource = ...) 
    { 
    ... 
    yourMainForm.YourResource = yourResource; 
    Application.Run... 
    } 
} 

编辑:从一些有趣的答案除了[1] ,这听起来像是整件事情都有问题。

如果终结器由于资源已经被处置而失败,那么在某个地方有问题。
如果此资源对于正确处置至关重要,那么应该正确地执行此操作。
我不确定“在用户界面中的某处引用”是否足够好。 即使这是通过Form或其他方式完成,并不难。您可以重写表单或组件或控制器的处置以确定性地执行它。

[1]如果有一天我咬我,可能会派上用场...

+0

如果用户在资源仍在使用时关闭应用程序(即在UI中的某处引用),则会发生这种情况/ – 2011-04-20 08:00:08

+0

我在IDisposable中执行此操作,现在实际上正在通过Dispose方法调用它... Dispose和尽管如此,Finalize共享相同的代码。感谢您的意见,但! – 2011-08-16 19:01:44

相关问题