I'm having a problem with my dongle heartbeat. We have been using a timer to send a heartbeat to our dongle to keep the license alive. However, if one of our processor-intensive subprocesses takes longer than the dongle license timeout, the application needs to be restarted.
The subprocess in question involves running a third party console app and redirecting its output to our log file. This sub-app is launched using
::CreateProcess
. Since
WM_TIMER
is a low priority, the heartbeat timer messages get shunted off and the license expires.
So I thought what was necessary was to put the heart-beat timer into its own thread. I did this, but the
::CreateProcess
appears to block all threads in the parent app.
I don't want to run the sub-process asynchronously, so how do I get my heart-beat thread to keep running at the same time?
Additional:
My timer thread is essentially this:
Threads And Timers[
^]
And I just noticed that my console redirection class (optionally) does a
WaitForSingleObject
on the created process, which is presumably what blocks the parent threads. Essentially, I need my parent app to continue with its 'background' threads while waiting for the spawned process to finish (without using WaitForSingleObject?).