我希望在关闭表单时处理所有资源(绑定事件、变量、对象、数据结构、数据绑定等)。目前,我只是为了测试此操作而在我的一个表单上逐个显式地处理资源。但是,我的应用程序很大,其中有许多表单,如果我开始在每个表单上显式地处理所有资源,那么将需要时间。因此,我的问题是是否有一种通用的方法或技术,可以处理所有资源,而不是逐个显式地处理它们。
谢谢。
谢谢。
在使用IDisposable对象时,应该使用using语句,而不是调用Dispose()方法。
通常情况下,在使用IDisposable对象时,应该在using语句中声明和实例化它。using语句以正确的方式调用对象的Dispose方法,并且(当你像上面显示的那样使用它时),它还会导致对象本身在Dispose被调用后立即超出范围。在using块内,对象是只读的,不能被修改或重新分配。
using (Font font1 = new Font("Arial", 10.0f))
{
byte charset = font1.GdiCharSet;
}
GC.Collect()
。但是,请注意,除非您非常确定需要这样做,并且通过调用此方法获得的回报对应用程序的性能有很大提升,否则不建议使用它。GC.Collect()
。也就是说,您需要创建一个外壳(可见/不可见)窗体来调用实际存在的窗体。在处理完成所有工作的窗体后,调用GC.Collect()
。GC.Collect
。foreach(IDisposable elem in _resources){ elem.Dispose();}
或者使用反射来实现同样的技巧。
此外,我认为这不是你真正的问题。一个人调用Dispose()方法不会花费很长时间,不像Dispose()方法本身的实现。
性能优化的常规规则:首先找到瓶颈,然后进行优化。