OK AL,
Sorry about the delay, I've been sick :< . I have another sample program that doesn't need: CmtWaitFor...Completion(), PostDeferredCall(), PostDeferredCallToThread(), or PostDeferred...AndWait(). It only uses the main thread, the timer thread, and a worker thread and its callback.
In a nutshell, I allow the f_execution() to quit when the timer fires, when the task completes, or when the task is interrupted. This thread function is followed by its own callback run by the main thread. That was the trick. Now that you are back in the main thread, f_exeTimeUp() can be called to do the modal dialog boxes if necessary. If the user wants to continue waiting, the worker thread and timer threads are both restarted. If the activity was instead stopped by the user, you just don't do dialog boxes. And the cycle continues....Check it out.
Attached is a new .C, and new .UIR and UIR .h files--even though the UIR should not have changed, but I attached them anyway.
Orlan