Я создал стандартную кнопку с помощью Expression Blend 3 и связал ее с обработчиком событий для включения светодиода. У меня также есть аналогичная кнопка для выключения светодиода. Я передаю это событие между подпроектами (с начала до конца) с помощью Windows CreateEvent()
а также SetEvent()
,
Проблема, с которой я сталкиваюсь, заключается в том, что мне нужно дважды нажать кнопку, чтобы сервер зарегистрировал событие. Каждый клик будет зарегистрирован внешним интерфейсом и SetEvent()
Функция будет выполнена, но только на втором проходе она будет подхвачена в конце.
Реализация интерфейса:
HRESULT MainPage::Disable_Alarm_Click (IXRDependencyObject* pSender, XRMouseButtonEventArgs* pArgs)
{
HRESULT hr = E_NOTIMPL;
if ((NULL == pSender) || (NULL == pArgs))
{
hr = E_INVALIDARG;
}
SetEvent(s_hEvent[19]); //Notify back end that event occured
return hr;
}
Реализация конечного события:
m_hEvents[ALARM_DISABLE_1] = CreateEvent(NULL, false, false, ALARM_DISABLE_EVENT);
if(m_hEvents[ALARM_DISABLE_1] == NULL)
{
return;
}
Сканирование внутренних событий:
case WAIT_OBJECT_0 + ALARM_DISABLE_1:
//Do stuff
//I put a breakpoint here but it does not hit it until second pass
break;
Чтобы уточнить case
У меня есть бесконечный цикл для случая переключения, содержащий список всех событий, относящихся к серверной части, и это работает без проблем, так как другие события регистрируются каждый раз, когда они происходят.
Я не уверен, что делаю что-то не так в своем коде. Это кажется довольно простым с точки зрения кодирования. Это просто ошибка с функцией Windows?
Я попытался пройтись по коду, чтобы увидеть, что происходит, и он всегда поражает мой SetEvent
функция, поэтому я не нашел никаких проблем с моим кодом. Просто кажется, что SetEvent
не устанавливает имя объекта события каждый раз.
Задача ещё не решена.