我的程序用于渲染动画片段,但每个帧都必须在渲染之前计算。似乎如果计算需要几秒钟,Windows开始将我的进程识别为“无响应”并拒绝再渲染任何内容,尽管在任务管理器中,进程本身似乎在“正在运行”和“无响应”之间切换“所有的时间。
我一直在网上搜索解决方案。很多人建议删除一些注册表项:
HKEY_USERS.DEFAULT \ Control Panel \ Desktop \ HungAppTimeOut
HKEY_USERS.DEFAULT \ Control Panel \ Desktop \ WaitToKillAppTimeOut
HKEY_CURRENT_USER \ Control Panel \ Desktop \ HungAppTimeOut
HKEY_CURRENT_USER \ Control Panel \ Desktop \ WaitToKillAppTimeOut
HKEY_CURRENT_USER \ Control Panel \ Desktop \ WaitToKillServiceTimeOut
但我找不到那些条目。并且根据描述,所提到的所有条目都是关于控制系统在用户需要结束进程或注销以终止进程或服务之后等待多长时间。所以他们不是我想要的。我想必须有一些阈值来控制系统什么时候开始将一个进程视为“没有响应”,我想将该阈值更改为稍微大一点。
感谢您的关注和时间,欢迎任何建议!
答案 0 :(得分:3)
您应该首先通过在后台线程中而不是在UI线程上进行处理/计算来避免挂起UI。如果您使用的是WinForms或WPF,请使用BackgroundWorker。
请参阅此处了解一些BGWorker示例:WPF Threads: Build More Responsive Apps With The Dispatcher
答案 1 :(得分:0)
我正在使用Microstation来构建模型,所以这是一个类似的过程。在构建模型的过程中,一切都冻结了,并将“应用程序无响应”消息添加到标题中。
禁用桌面窗口管理器会话管理器对我有用,但在企业环境中,这不是最佳解决方案,因为普通用户无权访问服务面板。
答案 2 :(得分:-3)
尝试从服务中禁用桌面窗口管理器会话管理器。为我工作。顺便说一下,这也禁用了航空主题。 Win7看起来真的很花哨但它必须正常运行。