shutdown workerthread (Readfile hangs)
Hi,
I`ve installed a worker thread for a serial port. It is already
working as expected - but I`m not able to shutdown this worker thread
if the thread hangs in the Readfile() command (because no further data
will be received)....
How can I abort the Readfile command so that I can handle the shutdown
event?
/* static */
UINT CDmxReaderThread::ReaderThread(LPVOID p)
{
CDmxSerialParameters * parms = (CDmxSerialParameters *)p;
OVERLAPPED ovl = {0};
ovl.hEvent = ::CreateEvent(NULL, TRUE, FALSE, NULL);
if(ovl.hEvent == NULL)
{ /* failed */
DWORD err = ::GetLastError();
// parms->notifyee->PostMessage(UWM_READER_SHUTTING_DOWN,
(WPARAM)err);
return 0;
} /* failed */
DWORD shutdown; // reason for shutdown
HANDLE waiters[2];
waiters[0] = parms->shutdown;
waiters[1] = ovl.hEvent;
#define MAX_BUFFER_SIZE 513
BOOL running = TRUE;
DWORD bytesRead;
while(running)
{ /* read loop */
BYTE buffer[MAX_BUFFER_SIZE];
BOOL ok = ::ReadFile(parms->hCom, buffer, MAX_BUFFER_SIZE - 1,
&bytesRead, &ovl);
if(!ok)
{
//waitformultiple-events to handle shutdown
}
}
best regards
Hans