Something like this should start:
HANDLE g_hThreadExitRequest = NULL;
UINT __cdecl ThreadFunction(LPVOID pParam)
{
AllocConsole();
HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
for (int i=1; true; ++i)
{
CStringA count;
count.Format("%d\n", i);
WriteFile(hCon, (LPCSTR)count, count.GetLength(), NULL, NULL);
if (WaitForSingleObject(g_hThreadExitRequest, 1000) == WAIT_OBJECT_0)
break;
}
FreeConsole();
return 0;
}
void Go()
{
g_hThreadExitRequest = CreateEvent(
NULL,
TRUE,
FALSE,
NULL
);
CWinThread *pThread = AfxBeginThread(
&ThreadFunction,
NULL,
THREAD_PRIORITY_NORMAL,
0,
CREATE_SUSPENDED ,
NULL
);
pThread->m_bAutoDelete = FALSE;
pThread->ResumeThread();
Sleep(30*1000);
SetEvent(g_hThreadExitRequest);
WaitForSingleObject(pThread->m_hThread, INFINITE);
delete pThread;
CloseHandle(g_hThreadExitRequest);
g_hThreadExitRequest = NULL;
}
Steve source
share