使用CreateEvent创建/打开一个已经存在的偶数会重置信号吗? [英] Will using CreateEvent to create/open an even that already exists reset the signal?

查看:138
本文介绍了使用CreateEvent创建/打开一个已经存在的偶数会重置信号吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果我使用CreateEvent打开事件:

If I use CreateEvent to open an event:

 responseWaitEvent = CreateEvent(NULL,        // no security
  TRUE,       // manual-reset event
  FALSE,      // not signaled
  (LPTSTR)eventName); // event name

此事件已存在并已发出信号.此呼叫是否会重置信号(因为将初始状态设置为FALSE).

And this event already exists and has been signaled. Will this call reset the signal (because of setting initial state to FALSE).

或者在调用时它将立即退出等待状态

Or will it immediately exit the wait when called:

 if (responseWaitEvent)
 {
  DWORD dw = WaitForSingleObjectEx(responseWaitEvent, m_ResponseTimeoutMillis, FALSE);

推荐答案

第二个调用将打开事件,但不会更改事件的状态.

The second call will open the event, it will not change the event's state.

我知道这一点,因为文档说它会打开它,但不会重置它.如果将其重置,那将非常重要.

I know this because the documentation says that it opens it but not that it resets it. If it reset it, that would be important enough to mention.

HANDLE responseWaitEvent = CreateEvent(NULL,        // no security
    TRUE,       // manual-reset event
    TRUE,      // signaled
    (LPTSTR)_T("TESTEvent")); // event name
    assert(responseWaitEvent && "Could not create event");

responseWaitEvent = CreateEvent(NULL,        // no security
    TRUE,       // manual-reset event
    FALSE,      // not signaled
    (LPTSTR)_T("TESTEvent")); // event name

    assert(responseWaitEvent && "Could not open event");

DWORD dw = WaitForSingleObjectEx(responseWaitEvent, 10000, FALSE);
assert(dw != WAIT_TIMEOUT);

相反:

HANDLE responseWaitEvent2 = CreateEvent(NULL,        // no security
    TRUE,       // manual-reset event
    FALSE,      // not signaled
    (LPTSTR)_T("TESTEvent2")); // event name
    assert(responseWaitEvent && "Could not create event");

responseWaitEvent2 = CreateEvent(NULL,        // no security
    TRUE,       // manual-reset event
    TRUE,      // signaled
    (LPTSTR)_T("TESTEvent2")); // event name
    assert(responseWaitEvent && "Could not open event");

DWORD dw2 = WaitForSingleObjectEx(responseWaitEvent2, 10000, FALSE);
assert(dw2 == WAIT_TIMEOUT);

这篇关于使用CreateEvent创建/打开一个已经存在的偶数会重置信号吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆