在不同时间运行进程会阻止事件发生 - C

时间:2010-04-28 15:54:11

标签: c winapi events multithreading

这是我之前回答的问题here

后面的问题

起初我认为我的创建事件的方式有问题,因为OpenEvent的句柄返回NULL,我设法找到了真正的原因,但我不知道该怎么做。

基本上我使用Visual Studio同时启动进程A和B,过去我的OpenEvent句柄不起作用,因为进程A在进程B之前的几分之一秒内查找事件的地址是时候了。

我的解决方案是简单地允许进程B在进程A之前运行,修复错误。

我现在遇到的问题是,进程B现在从进程A中读取事件,并且正如您所期望的那样,在尝试从进程A打开事件时也会返回空句柄。

我在两个进程的WM_CREATE消息中创建事件,此外我还同时创建一个线程来打开/读取/处理事件。

看来如果我在他们没有机会看到对方的同时运行它们,或者如果我在另一个人错过之前运行一个并且无法打开句柄。

有人可以建议解决方案吗?

感谢。

1 个答案:

答案 0 :(得分:1)

只需用CreateEvent替换OpenEvent即可。 CreateEvent将打开一个Event,而不是创建一个新的Event,它会找到一个名为传递给CreateEvent的现有事件。