我试图通过处理FormClosing来阻止表单关闭。
if(e.CloseReason == CloseReason.UserClosing)
{
e.Cancel = true;
SomeFunction();
}
但是,当它进入SomeFunction()时,会抛出stackoverflow异常。 这可能是什么原因?感谢。
编辑:
我不好意思没有调试。 SomeFunction()中有一些字段验证,当字段有效时,我调用表单的Close()函数。由于我对FormClosing()进行了处理,因此它将在SomeFunction()中再次进行处理。我不知道调用Close()函数也在CloseReason.UserClosing下。谢谢你的回答。
答案 0 :(得分:1)
堆栈溢出的常见原因是无限递归。
您应检查SomeFunction()
是否不会再次调用SomeFunction()
(可能会触发您正在处理的事件。
您可以在调试器中检查调用堆栈,看看是否是这种情况(根据上面的注释)。