我试图通过处理 FormClosing 来阻止表单关闭。
if(e.CloseReason == CloseReason.UserClosing)
{
e.Cancel = true;
SomeFunction();
}
但是,当它进入 SomeFunction() 时,会抛出一个 stackoverflow 异常。 这可能是什么原因?谢谢。
编辑:
糟糕,我没有调试。 SomeFunction() 中有一些字段验证,当字段有效时,我调用表单的 Close() 函数。由于我对 FormClosing() 进行了处理,它将在 SomeFunction() 中再次进行。我不知道调用Close() 函数也在CloseReason.UserClosing 下。感谢您的回答。
最佳答案
堆栈溢出的一个常见原因是无限递归。
您应该检查 SomeFunction()
不会导致再次调用 SomeFunction()
(可能通过触发您正在处理的事件。
您可以在调试器中检查调用堆栈,看看是否属于这种情况(根据上面的评论)。
关于c# - 防止关闭表单然后 stackoverflow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14595267/