最近开发一个界面,为了实现界面延时自动关闭,加了一句代码Thread.Sleep(2000)。开发过程中未发现问题。后来测试发现,如果这个时候点击界面,会导致系统崩溃。
于是找了一些资料,得到如下解决办法:
Thread t = new Thread(o => Thread.Sleep(2000)); t.Start(this); while (t.IsAlive) { //防止UI假死 Application.DoEvents(); }
Application.DoEvents()方法本身就是处理Windows消息,防止界面卡死。