(for example) whether in a Critical Section or not. That, not where I 
answer.
just fine.
"George" <JungleGeorge@newsgroup.nospam> schrieb im Newsbeitrag 
news:utHlQ1GpHHA.3644@TK2MSFTNGP02.phx.gbl...
Hello all,
I have an app where I run a variable number of identical threads. In 
order
to use "try-throw-catch" error handling I have "wrapped" the WorkerBee
threads in the following function:
void WorkerBeeWrapper(LPVOID lpParam)
{
EnterCriticalSection(&cs);
try
{
 WorkerBee( MYWORKSPACE* lpParam );
}
catch(char* str)
{
 // process errors I define
}
catch( ... )
{
 // process other errors
}
// problem is here ...
LeaveCriticalSection(&cs);
}
The WorkerBee() function enters and exits the same critical section as 
it
does it's job. My problem is this: How to tell in the WorkerBeeWrapper()
function whether or not the ending thread owns the critical section. 
Because
there may be an error exit, I do not know.
If your WorkerBee function enters a critical section, it should also 
leave it before it returns, no matter how it returns (reching the end of 
the function, reaching a return statement, throwing an exception or 
whatever. Using wrappers like CCriticalSection and CSingleLock might 
help. If a function sometimes returns while still inside a critical 
section and sometimes not, you should think about re-designing your code. 
But don't mess around with internal data of critical sections or any 
other system objects. Your program already causes enough headache, there 
is no need to add another one.
   Heinz