windows-mobile-6.5windows-mobile-6windows-mobile-gps

Windows Moible 6.5 SDK GPS Sample Bugged


I cannot seem to find a good solution for this issue online. I have a device that is running Windows Embedded Handheld 6.5. I run the solution located at below

C:\Program Files (x86)\Windows Mobile 6.5.3 DTK\Samples\PocketPC\CS\GPS

I deploy the code to my device, not an emulator, and the code breaks with a null reference exception at

Invoke(updateDataHandler);

The solution ive seen recommends changing this to below

BeginInvoke(updateDataHandler);

But now the code breaks at Main with NullRefreceException.

Application.Run(new Form1());

Has anyone found a solution for this?


Solution

  • Did you alter the code? updateDataHandler is initialized in Form_Load:

        private void Form1_Load(object sender, System.EventArgs e)
        {
            updateDataHandler = new EventHandler(UpdateData);
    

    so that object will not be NULL. But there are other annoyances with the code, especially the Samples.Location class. You may instead use http://www.hjgode.de/wp/2010/06/11/enhanced-gps-sample-update/ as a starting point and the older one: http://www.hjgode.de/wp/2009/05/12/enhanced-gps-sampe/

    The main issue with the sample is that it does not use a callback (delegate) to update the UI. If an event handler is fired from a background thread, the handler can not directly update the UI. Here is what I always use to update the UI from a handler:

        delegate void SetTextCallback(string text);
        public void addLog(string text)
        {
            // InvokeRequired required compares the thread ID of the
            // calling thread to the thread ID of the creating thread.
            // If these threads are different, it returns true.
            if (this.txtLog.InvokeRequired)
            {
                SetTextCallback d = new SetTextCallback(addLog);
                this.Invoke(d, new object[] { text });
            }
            else
            {
                txtLog.Text += text + "\r\n";
            }
        }