Ben*_*iss 2 delphi winapi messagebox delphi-7
我遇到了messagebox API的问题.我使用messageboxw向用户提问.例如,我的程序非常忙于线程等.当用户点击显示消息框的按钮时,它不显示消息框,直到我的程序比以前忙.当我删除消息框后,代码执行得很好.我有太多的代码要展示,但也许有一些东西我需要照顾...
有人也有这种经历吗?
谢谢你的帮助.
Dav*_*nan 10
单击按钮时发生的情况是消息发布到消息队列.在您下次填充消息队列之前,这不会得到处理.因此,如果您在单击按钮和程序响应之间看到延迟,那是因为消息队列未及时得到服务.
如果你的GUI线程忙,那么在主线程完成它正在做的任何事情之前,不会抽取消息队列.如果您在其上运行了很长时间的任务,那么您的GUI线程将会很忙.一旦排队按钮单击消息最终得到处理,则调用MessageBoxW将导致对话框立即显示.
GUI线程无法运行的唯一原因是CPU是由更高优先级的线程使用的.但这不太可能.应用程序使用高优先级线程非常不寻常.如果你这样做,我会感到惊讶.
如何解决问题?如果您在主线程上有长时间运行的任务,请将这些任务移到后台线程上.或者,如果您具有阻止GUI线程运行的高优先级线程,则以正常优先级运行后台线程.