Hello, I am fairly new to the concept of threading in C++ but I am giving it a go and trying to create a thread class. Creating a thread is easy enough with _beginthreadex. But I have hit a wall. So far my class is quite simple it. The constructor takes a "this" pointer ans uses it to pass to the thread routine which casts it back to the correct class type and executes a long running method while a progress bar informs the user. All very simple. I am using RegisterWaitForSingleObject to initiate a callback routine that stops the progress bar after the thread has finished it's job. Here is the problem. Where do I call UnregisterWait? The main thread has moved on and there's no way for it to know when the worker thread has finished, and i'm not allowed (according to MSDN) to call UnregisterWait from inside the CallBack Routine. So where is it supposed to be called? The Callback routine is the only method that knows when the thread has completed it's work. Help! :-)