DoEvents()在FormClosing中也是邪恶的吗?

在我建议使用的另一个问题上

private void Form1_FormClosing(object sender, FormClosingEventArgs e) { while (processingLock) Application.DoEvents(); } 

在FormClosing事件中(在完成冗长的计算后,processingLock立即变为false)。 它应该有助于使应用程序以有序的方式关闭,并且原始海报不使用线程。

根据我建议的答案,有人评论DoEvents永远不会好,提供这个链接: 使用Application.DoEvents()

我读过并且(我认为)理解了这个问题。 在我看来(仍然是noobish)如果我在FormClosing事件中使用如上所述的DoEvents,则没有发生混淆事件的风险 – 如果没有办法取消用户的结束(比如设置e.Cancel = true) 。

我的问题:这是一个有效的方法,以确保应用程序终止良好,如果没有,为什么?

感谢评论和更多关于相关post的思考,我已经弄清楚为什么FormClosing的这个“特例”毕竟不是特别的。

问题是FormClosing事件期间窗体未被禁用。 用户不仅可以尝试多次关闭表单(在这种情况下也可以),但她也可以单击任何其他UI元素 – 导致链接文章中提到的不确定执行顺序等问题。

新手的硬概念,感谢您的投入。