【发布时间】:2011-08-18 07:03:22
【问题描述】:
如果我用户以某种方式关闭主表单,我需要确保所有表单都将关闭。所以我决定隐藏 Close() 函数,我写了这样的东西
public new bool Close()
{
List<Form> formsList = new List<Form>(Application.OpenForms.Count);
foreach (var form in Application.OpenForms)
formsList.Add((Form)form);
formsList.Reverse();
foreach (var form in formsList)
{
if (form.IsDisposed) continue;
Invoke(new GenericEventHandler(() => { form.Close(); }));
}
return Application.OpenForms.Count == 0;
}
所以如果所有表单都成功关闭,我会返回 true,因此我知道用户可以从应用程序中注销。
但是,form.Close() 函数似乎没有立即触发。调用form.Close() formclosed 事件后不会立即触发,集合 Application.OpenForms 也不会被修改。已打开表单的数量已更改。
可能是什么原因?
【问题讨论】: