You don't want to suspend a thread from outside it. You may find
SuspendThread API function, but DON'T USE IT.
What you want is to wake up the thread when you want it to receive data. Use
events (CreateEvent, SetEvent) and wait on its handle.
What I want to do is pause the worker thread from outside the thread.
The micro I am communicating with receives 1 of 20 command codes from the
pc.
The only reason for the serial worker thread is there is a chance of the
micro sending data unrequested.
In most cases I send a code to the micro and wait for the response (with a
timeout for error)
the amount of data in these cases is allways known.
So what I used to do before using the serial worker thread is this:
I send a code to the micro when a button is clicked on the dialog.
I wait for the known number of bytes to be received and act upon it.
Untill this application, I never felt I needed a worker thread.
Of course I will only be pausing the thread when I know it is not going to
be receiving this occational data.
I will not need to pause the thread very long either.
Just long enough to do this quick query to the micro.
"Scott McPhillips [MVP]" <org-dot-mvps-at-scottmcp> wrote in message
news:%23IIVeW2aJHA.4504@TK2MSFTNGP04.phx.gbl...
A worker thread can be paused by having it call WaitForSingleObject or
WaitForMultipleObjects. For example, you could put this call right after
the while(TRUE). The "Object" it waits for can be an event that you
control in the main thread. (CreateEvent, SetEvent, ResetEvent)
"Me" <me@right.her> wrote in message
news:g--dnVoCh5EG78bUnZ2dnUVZ_j-dnZ2d@giganews.com...
//How do I temporarily stop this thread so another area of the dialog
can control the serial port ??
//Example: I have a routing that sends a byte out the serial port to an
external microcontroller
// and I want to wait for the response within this routine...
--
Scott McPhillips [VC++ MVP]