Hi,
I have encountered same problem using OpenNETCF SDK 1.4 library. After analyzing a bit the code (i downloaded sources for OpenNETCF SDK 1.4) i have found something really interesting.
Well, GPS class uses Port class for serial communication. Both classes use threading for processing messages. Good for Port class but not sure why that is needed for GPS class as its thread does nothing but Sleep()-ing almost all the time (well, to be honest, with few code to detect status, instantiate Port object based on status, etc. ). So, application already has two threads started when GPS.Start() exists with success. So far so "good", Port class creates thread with priority:
eventThread.Priority = ThreadPriority.Highest;
Highest priority possible (!!!???).
After importing GPS and Port classes (raw sources with a bit of workaround) in my solution and:
1. Making GPS not using threading at all.
2. Making Port's thread priority, e.g.
eventThread.Priority = ThreadPriority.BelowNormal;
hanging has gone. Events are fired, which is good, and, most important, Form (which i use in my solution) has enough CPU time to catch events, draw what is necessary and refresh itself.
I have a spv C500 phone with an ARM 200Mhz CPU. Not the best performing CPU, so 'ThreadPriority.Highest' is a kind of killer.
Hope this helps.
ahhrrrr ... problems again!