ser*_*hio 8 .net components garbage-collection dispose clear
有多个线程(a,b,c等)关于.NET组件容器中的Clear()项不会处理它们(通过调用Dispose(true))这一事实.
最常见的是,恕我直言,Clear-ed组件在应用程序中不再使用,因此在从父容器中清除它们之后需要明确地进行处理.
也许这是一个好主意,集合的Clear
方法有一个bool参数dispose
,当在true时也会在从列表中删除之前处理集合元素?
Han*_*ant 15
要求进行这样的修改毫无意义,Windows Forms团队已经解散了很久以前.它处于维护模式,仅考虑安全问题和操作系统不兼容性.
否则很简单就可以创建自己的方法来执行此操作:
public static class ExtensionMethods {
public static void Clear(this Control.ControlCollection controls, bool dispose) {
for (int ix = controls.Count - 1; ix >= 0; --ix) {
if (dispose) controls[ix].Dispose();
else controls.RemoveAt(ix);
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在你可以写:
panel1.Controls.Clear(true);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8487 次 |
最近记录: |