Just a couple weeks ago I added some code to one of my Windows CE data recorder programs that my organization uses, and what the 'add on' does is record Gps satellite latitude & longitude readings into a data file. The program itself is for recording field data on trees. However, we wanted to have the Gps coordinates saved along with each plot. There was an external library in the form of a dll that I statically linked to, and it exported several functions that I could call to obtain gps coordinates when I wanted them. I didn't want the GPS data collection to interfere with the tree data collection, so I started a seperate thread of execution to collect a user specified number of gps points for averaging while the user was entering other data. What I did was create a timer loop that ran for X number of seconds and collected a point every second. It updated the count into some user memory, and when the count was complete it droped out of the while loop & ended the thread. It works wonderful. Doesn't tie up the machine or anything. It even pops up a window that the user can minimize and go about other things if he/she doesn't want to watch the every second lat/long readings, and the window destroys itself when done. If you want more details let me know.