seit ein paar Tagen (mit Unterbrechung) bekomme ich ein mögliches Timing-Problem nicht hin. Ich erstelle ein Fenster und einen zweiten Thread in dem ich ein paar Operationen ausführe. Das Fenster macht nichts und soll auf den Thread warten.
Im Debug funktioniert es. Jetzt habe ich auf Release umgestellt und booommmm...das Fenster schließt sofort nach Programmstart.
Ich bin mir jetzt nicht sicher ob der Compiler im Release was optimiert oder im Release es einfach zu schnell ist und ich ein Timing-Problem habe. Vielleicht hat jemand einen Hinweis woran das liegen könnte. Danke!
Die Nachrichtenschleife sieht so aus:
Code: Alles auswählen
while (true)
{
// Retrieve messages
if (::PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE))
{
// If the message is WM_QUIT, exit the loop
if (msg.message == WM_QUIT)
break;
// Translate and dispatch the message
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
else
{
// Check if the thread has terminated
DWORD result = ::WaitForSingleObject(hThread, INFINITE);
if (result == WAIT_OBJECT_0)
{
// Thread has terminated
DWORD exitCode;
if (::GetExitCodeThread(hThread, &exitCode) && exitCode == 0)
{
// Successfully terminated
break;
}
else
{
// Error while terminating the thread
}
}
}
}