我正在使用wxWizard
,在我的第3页中,我需要从后端调用一个函数,当该函数需要很长时间来发送响应时,我的应用程序挂起并显示标题中没有响应。一旦从后端函数收到响应,app就会正常运行。为什么会这样?难道我做错了什么?我应该如何让该应用程序不挂?由于某些网络问题或后端处理时间过长,后端功能的响应会延迟。
答案 0 :(得分:0)
见this answer。以下是摘录:
应用程序从Windows提供的队列中获取事件。
如果应用程序没有轮询事件队列一段时间(5秒),例如在进行长时间计算时,则Windows假定应用程序已挂起并警告用户。
避免应用程序将昂贵的计算推送到工作线程或拆分处理并确保队列定期轮询。
因此,代码的问题在于,在您的程序中只有一个线程,即主线程。它正在处理所有活动,例如UI更新,事件处理,响应用户等(这些都非常耗时)。但是当使用它来与后端服务器进行处理连接时,耗时。所以,你应该使用另一个线程来处理网络操作。通过这种方式, main 线程将可用于其正常工作,并且不会显示它没有响应。