Я использую поток с циклом. Выгружаю значит скрипт, сворачиваю игру. Затем разворачиваю её и у меня чёрный экран. Цикл останавливаю через EVENT
Помогите сделать нормальный поток с остановкой цикла и завершением самого потока при отгрузке скрипта)
Помогите сделать нормальный поток с остановкой цикла и завершением самого потока при отгрузке скрипта)
C++:
HANDLE event;
void ThreadProc(void* pParam) {
while (WaitForSingleObject(event, 100) != WAIT_OBJECT_0)
{
// Anything actions in while
}
_endthread();
}
void CALLBACK mainloop()
{
static bool init = false;
if (!init)
{
if (GAME == nullptr)
return;
if (GAME->GetSystemState() != eSystemState::GS_PLAYING_GAME)
return;
if (!SF->getSAMP()->IsInitialized())
return;
event = CreateEvent(NULL, FALSE, FALSE, NULL);
_beginthread(ThreadProc, 0, NULL);
init = true;
}
}
BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
{
switch (dwReasonForCall)
{
case DLL_PROCESS_ATTACH:
{
SF->initPlugin(mainloop, hModule);
} break;
case DLL_PROCESS_DETACH:
{
SetEvent(event);
} break;
}
return TRUE;
}