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

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


在FormClosing事件中(经过长时间的计算后,processingLock立即变为false)。这样做的目的是使应用程序有序地关闭,并且原始发布者不使用线程。

在我建议的答案中,有人评论说DoEvents永远都不是一件好事,它提供以下链接:Use of Application.DoEvents()

我阅读并且(我认为)理解了这个问题。我认为(仍然是废话)如果我在FormClosing事件中使用上述DoEvents的话,就不会发生混淆事件的风险-如果没有办法取消用户的关闭操作(如设置e.Cancel = true) 。

我的问题:这是确保应用程序正常终止的有效方法吗?如果不能,为什么?

最佳答案

多亏了评论和对relevant posts的更多思考,我才弄清楚了为什么这种带有FormClosing的“特殊情况”毕竟不是特别的。

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

菜鸟的硬概念,谢谢您的投入。

关于c# - DoEvents()在FormClosing中是否也是邪恶的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25482094/

10-10 18:17