一般来说程序的无响应是因为UI线程(主线程)在执行一个重量级操作。 可以通过以下方法避免:
1 开一个子线程去出去,通过消息告诉上层。
2 主线程把耗时操作分开, 每操作一段时间,通过postmessage打断当前堆栈,给UI线程留出CPU时间片, 然后自己在下一个消息中继续处理。
比如要处理1万的人的信息,每个人的信息处理可能需要10ms,如果一次处理完,就需要100秒,主线程直接无响应,这时就可以通过消息来打断堆栈。
一般来说程序的无响应是因为UI线程(主线程)在执行一个重量级操作。 可以通过以下方法避免:
1 开一个子线程去出去,通过消息告诉上层。
2 主线程把耗时操作分开, 每操作一段时间,通过postmessage打断当前堆栈,给UI线程留出CPU时间片, 然后自己在下一个消息中继续处理。
比如要处理1万的人的信息,每个人的信息处理可能需要10ms,如果一次处理完,就需要100秒,主线程直接无响应,这时就可以通过消息来打断堆栈。