阻止关闭窗体然后stackoverflow

时间:2013-01-30 01:37:23

标签: c#

我试图通过处理FormClosing来阻止表单关闭。

if(e.CloseReason == CloseReason.UserClosing)
{
    e.Cancel = true;
    SomeFunction();
}

但是,当它进入SomeFunction()时,会抛出stackoverflow异常。 这可能是什么原因?感谢。


编辑:

我不好意思没有调试。 SomeFunction()中有一些字段验证,当字段有效时,我调用表单的Close()函数。由于我对FormClosing()进行了处理,因此它将在SomeFunction()中再次进行处理。我不知道调用Close()函数也在CloseReason.UserClosing下。谢谢你的回答。

1 个答案:

答案 0 :(得分:1)

堆栈溢出的常见原因是无限递归。

您应检查SomeFunction()是否不会再次调用SomeFunction()(可能会触发您正在处理的事件。

您可以在调试器中检查调用堆栈,看看是否是这种情况(根据上面的注释)。