我在遗留应用程序(不是我自己编写的)中遇到了一个奇怪的错误,当我更改日历上的日期时,我遇到了 StackOverflow 异常。
简化版本如下。这是包含两个控件的 Windows 窗体的代码隐藏,一个名为label2的标签和一个名为 MonthCalendar 的日历,名为monthCalendar1。
我认为这里的想法是创造打字机效果。我在 XP 上,我在 Windows 7 上的同事能够正常运行:
private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
{
const string sTextDisplay = "Press Generate button to build *** Reports ... ";
for (var i = 0; i < 45; i++)
{
label2.Text = Mid(sTextDisplay, 1, i);
System.Threading.Thread.Sleep(50);
//Error on this line
//An unhandled exception of type 'System.StackOverflowException' occurred in System.Windows.Forms.dll
Application.DoEvents();
}
}
public static string Mid(string s, int a, int b)
{
var temp = s.Substring(a - 1, b);
return temp;
}
我看不到堆栈跟踪,我只看到:
{无法计算表达式,因为当前线程处于堆栈溢出状态。}
另外,我对询问为什么我没有检查 StackOverflow 异常的堆栈跟踪的评论很感兴趣,因为至少如果没有第三方工具,这似乎是不可能的。
这可能是什么原因造成的?谢谢