2

关于我建议使用的另一个问题

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

在 FormClosing 事件中(在完成冗长的计算后, processingLock 立即变为假)。它的目的应该是让应用程序有条不紊地关闭,并且原始发布者没有使用线程。

在我建议的答案中,有人评论说 DoEvents 从来都不好,提供此链接:Use of Application.DoEvents()

我阅读并(我认为)理解了这个问题。在我看来(这仍然是愚蠢的)如果我在 FormClosing 事件中使用上述 DoEvents 则不会发生混淆事件的风险 - 如果无法取消用户的关闭(例如设置 e.Cancel = true) .

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

4

1 回答 1

0

多亏了评论和对相关帖子的更多思考,我才明白为什么这种带有 FormClosing 的“特殊情况”并不特别。

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

菜鸟的硬概念,感谢您的输入。

于 2014-08-25T10:05:57.070 回答