我无法在后台执行搜索操作,并在列表框内的前台向用户显示结果。
该程序用于SendMessage
将查询结果发送回 GUI。
当程序关闭时,GUI 将全局(易失性)变量标记为“已完成”,并用于MsgWaitForMultipleObjects
等待线程句柄,加入线程。
当我中断程序时,我看到一个死锁:GUI 正在等待后台线程终止,而后台线程正在等待SendMessage
。
当我使用 100 毫秒超时MsgWaitForMultipleObjects
并在循环中调用它时,仍然会发生这种死锁,其中QS_ALLINPUT
. 我不知道为什么。
这种设计是否正确?有没有更好的方法来等待线程终止?
如果不是,那是什么问题?