在Vista及后续版本Windows操作系统中,在应用程序UI线程有没处理的完任务的情况下点击应用程序界面,应用程序会弹出一个假死界面:
这是由于Vista引入了ghost界面机制,对于输入消息超过若干秒没有响应,操作系统就会出上图所示提示界面。对于这个问题的解决方式有两种:作为开发人员来说,可以直接修改自己的程序,将UI线程中处理的任务迁移到工作线程中即可;还有一种,就是程序的使用者,可以通过修改注册表的方式改变假死界面出现的时间阈值。
这里我们只对第二种方式进行介绍。打开注册表,找到路径Computer\HKEY_CURRENT_USER\Control Panel\Desktop\HungAppTimeout(如果不存在,可以自己新建注册表值),将其修改为比较大的阈值就可以了(比如修改为15秒只需要将项目值修改为15000)。