Stackoverflow in InitializeComponent

本文关键字:InitializeComponent in Stackoverflow | 更新日期: 2023-09-27 18:02:06

我有很多控件(至少数百)添加到我的表单,其中相当多的是自定义控件,和代码内InitializeComponent是巨大的。尽管如此,我还是不明白为什么会有递归,为什么会发生堆栈溢出。只有当我从VS内部运行调试版本(2008年,它使用。net框架3.5和Winforms)时才会发生这种情况。如果双击可执行文件,应用程序就会运行。有人能告诉我这是怎么回事吗?我该怎么做才能找出原因?谢谢。

Stackoverflow in InitializeComponent

可能你的InitializeComponent方法的代码包含了大量的局部变量/大的局部变量(例如struct有很多字段)-使用几乎所有可用的堆栈空间,当在VS的调试器下运行时,在堆栈中有一点少的空间,因此错误。

如果这是问题,可以将局部变量转换为类字段,和/或将InitInstance方法拆分为具有自己的局部变量的各种方法-这将共享相同的堆栈空间

你最好的办法是找出异常发生的确切位置-控制Alt E弹出异常对话框-单击抛出下的公共语言运行时异常,调试将在抛出错误后立即停止-从那里你可以查看调用堆栈并跟踪调用,看看你在哪里出错了。(如果快捷方式不起作用,您可以在visual studio中单击debug/exceptions进行相同的操作)

(只是为了清楚-异常窗口弹出一个对话框,左侧有一个列表,c++异常,公共语言运行时异常等…你想要点击与公共语言运行时异常一致的第一个复选框,这样你的代码就会在你遇到问题时中断。然后为了进一步调查,debug/windows/callstack -或control/alt C -这将很快让你看到你是否有递归或其他一些问题。

相关文章:
  • 没有找到相关文章