Как отправить сигнал о событии через процессы - C

У меня есть приложение, состоящее из двух окон, одно общается с другим и отправляет ему структуру, содержащую два целых числа (в этом случае два броска кубика).

Я буду использовать события для следующих обстоятельств:

Процесс a отправляет данные процессу b, процесс b отображает данныеПроцесс закрывается, в свою очередь закрывается процесс бПроцесс b закрывает a, в свою очередь закрывает процесс a

Я заметил, что если второй процесс постоянно ожидает, пока первый процесс отправит данные, тогда программа просто будет сидеть в ожидании, и именно здесь возникла идея реализации потоков в каждом процессе, и я уже начал реализовывать это.

У меня проблема в том, что у меня нет большого опыта работы с потоками и событиями, поэтому я не уверен, что лучше всего реализовать то, что я хочу сделать.

Я пытаюсь понять, как другой процесс узнает о событии, которое запускается, чтобы он мог выполнять задачи, которые ему нужны, я не понимаю, как один процесс, отдельный от другого, может сказать, в каком состоянии находятся события тем более, что нужно действовать, как только событие изменило состояние.

Спасибо за любую помощь

Редактировать:

Я могу использовать только методы Create / Set / Open для событий, извините, что не упомянул об этом раньше.

более тогоЯ создаю новый поток в процессе A, который позволяет пользователю взаимодействовать с приложением во время прослушивания события close.

Создать тему:

hCreateEventThread = CreateThread(
                NULL,       // lpThreadAttributes (default)
                0,          // dwStackSize (default)
                ThreadFunc, // lpStartAddress
                NULL,       // lpParameter
                0,          // dwCreationFlags
                &hCreateEventThreadID   // lpThreadId (returned by function)
                );

            if(hCreateEventThread != NULL)
            {
                MessageBox(hMainWindow,L"Thread created!",L"Success!",MB_OK);
            }

Открытие события на А, когда Б закрывается:

    DWORD WINAPI ThreadFunc(LPVOID passedHandle)
    {
        hConsumerCloseEvent = OpenEvent(EVENT_ALL_ACCESS, FALSE, TEXT("Global\\ConsumerCloseEvent"));

        while(TRUE)
        {
            dwCloseResult = WaitForSingleObject(hConsumerCloseEvent,INFINITE);

            switch (dwCloseResult) 
            {
                // State of object is signalled
            case WAIT_OBJECT_0: 
                //Consumer has closed, exit program.
                //CloseHandle(hDiceRoll);
                //CloseHandle(hCloseEvent);
                //CloseHandle(hCreateEventThread);
                ExitProcess(1);
                break;
            default: 
                return;
            }
        }
    }

Создание события в b (в WM_CREATE):

hConsumerCloseEvent = CreateEvent( 
                NULL,               // default security attributes
                TRUE,               // manual-reset event
                TRUE,              // initial state is nonsignaled
                TEXT("Global\\ConsumerCloseEvent")  // object name
                );

            if(hConsumerCloseEvent == NULL)
            {
                MessageBox(hMainWindow,L"CreateEvent failed",L"Error",MB_OK);
            }

Установка события для сигнализации, когда B закрывается:

case WM_DESTROY:
        {
            SetEvent(hConsumerCloseEvent);
            PostQuitMessage(0);
            break;
        }

Как вы можете видеть, когда Событие сигнализируется, приложение A закрывается. Когда я запускаю приложение и закрываю процесс B, процесс A не замечает измененный сигнал и не закрывается.

Изменить 2:

После использования GetLastError (); Мне удалось определить, что дескриптор OpenEvent был NULL, ошибка дана

ERROR_FILE_NOT_FOUND - 2: система не может найти указанный файл

Является ли мой метод создания события и чтения его неправильным, я обязательно включил префикс Global \.

Ответы на вопрос(2)

Ваш ответ на вопрос