private void Add() { for (int i = 0; i < 100; i++) { Button button = new Button(); button.Width = 300; button.Height = 200; panel1.Controls.Add(button); Application.DoEvents();//此处用的话会导致问题 } } private void button1_Click(object sender, EventArgs e) { Add(); } int errorCount = 0; private void timer1_Tick(object sender, EventArgs e) { panel1.Controls.Clear(); Add(); }
如上代码,100ms的定时器,执行几分多钟后就会崩溃,提示StackOverFlow,推测可能是添加Button时队列里有新事件,DoEvents引爆导致。