在这两天的工作中,遇到了一个问题,在主进程中通过 CreateProcess 打开另外一个进程,然后使用 WaitForSingleObject 来进行调用进程的阻塞,等待被调用进程的返回,但是在被调用进程运行期间,如果对调用进程操作,将会出现一些奇怪的现象,就像是所有在开启子进程时的各种事件全部被快速地执行了。如下图 Demo 所示:
这是由于 WaitForSingleObject 阻塞了所有父进程的消息直到被调用进程返回时这些消息才被处理,处理这个问题的一个解决办法就是使用 MsgWaitForMultipleObjects 代替 WaitForSingleObject ,效果如下图所示:
其中执行部分关键代码如下: