void StopService()
{
//处理一些服务的停止过程
PostThreadMessage(dwThreadID, WM_QUIT, 0, 0);
WaitForSingleObject(...)
}
OnClose
{
if(如果没有停止服务)
{
StopService();
}
else
{
CDialog::OnClose();
}
}
问题:
1.当我手动响应按钮事件 做StopService后在关闭程序,此时工作线程队列能收到WM_QUIT 退出
2.当我直接关闭程序,由程序做StopService时, 此时工作线程收不到WM_QUIT消息为什么呢?
StopServcie里面是用一个线程在处理一些资源的释放。
如果直接OnCLose就可能导致一些问题出现在StopService尾部会发送一个WM_CLOSE消息,同时在OnClose里面会判断一个标志是先做清理动作还是直接关闭。