在另一个问题上,我建议使用
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/