【问题标题】:Running processes at different times stops events from working - C在不同时间运行进程会阻止事件工作 - C
【发布时间】:2010-04-28 15:54:10
【问题描述】:

这是我之前回答的问题here的后续问题

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

基本上我使用 Visual Studio 同时启动进程 A 和 B,过去我的 OpenEvent 句柄无法工作,因为进程 A 在进程 B 之前的几分之一秒内寻找事件的地址时间到了。

我的解决方案是让进程 B 在进程 A 之前运行,从而修复错误。

我现在遇到的问题是,进程 B 现在从进程 A 读取事件,并且正如您所料,当尝试从进程 A 打开事件时,它也会返回一个空句柄。

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

如果我同时运行它们,它们似乎没有机会看到彼此,或者如果我在它们中的另一个错过并且无法打开句柄之前运行它们。

谁能提出解决方案?

谢谢。

【问题讨论】:

    标签: c winapi events multithreading


    【解决方案1】:

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

    【讨论】:

    • 嗯,听起来有点琐碎。我会试一试,看看结果如何,希望它不会花太长时间来实施。
    • 我决定让一个进程打开另一个进程,在查找可用事件之前检查它是否已经可用。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2018-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-05
    • 2022-10-19
    • 2012-03-09
    • 2020-05-18
    相关资源
    最近更新 更多