Ловушка 22 с ожиданием завершения обработки sh внешним приложением и случайной отменой до завершения - PullRequest
0 голосов
/ 18 июня 2020

Это часть моего кода для запуска внешнего приложения и ожидания его завершения sh:

DWORD WaitResult;
do
{
    WaitResult = MsgWaitForMultipleObjects(1,
        // only 1 wait object
        &processInformation.hProcess, // worker thread
        FALSE,   // stop if any
        INFINITE,  // no timeout
        QS_ALLINPUT);
    if (WaitResult == WAIT_OBJECT_0 + 1)
    {
        // Handle windows message
        MSG Msg;
        while (PeekMessage(&Msg, nullptr, 0, (UINT)-1, PM_REMOVE))
        {
            TRACE3("%d %d %d\n", Msg.message, Msg.wParam, Msg.lParam);
            TranslateMessage(&Msg);
            DispatchMessage(&Msg);
        }
    }
} while (WaitResult != WAIT_OBJECT_0);
ASSERT(WaitResult == WAIT_OBJECT_0);

Это нормально, пока не возникнет проблема с вызывающим exe, которая вызывает мое приложение бесконечно ждать.

Я не указал время ожидания, потому что вызываемый exe синхронизирует события календаря с Outlook или Google. Итак, в зависимости от производительности пользователя rnet и синхронизируемых серверов с ...

Есть ли способ безопасно добавить тайм-аут, который не реализует фактический процесс?

...