Windows Moible 6.5 SDK GPS示例错误

时间:2016-09-27 15:41:13

标签: windows-mobile-6.5 windows-mobile-6 windows-mobile-gps

我似乎无法在线找到这个问题的好方案。我有一台运行Windows Embedded Handheld 6.5的设备。我运行位于下面的解决方案

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

我将代码部署到我的设备,而不是模拟器,代码在

处打破了空引用异常
Invoke(updateDataHandler);

我见过的解决方案建议将此更改为

BeginInvoke(updateDataHandler);

但是现在代码在Main处有NullRefreceException。

Application.Run(new Form1());

有没有人为此找到解决方案?

1 个答案:

答案 0 :(得分:1)

你改变了代码吗? updateDataHandler在Form_Load中初始化:

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

这样对象就不会为NULL。但是代码还有其他烦恼,尤其是Samples.Location类。您可以改为使用http://www.hjgode.de/wp/2010/06/11/enhanced-gps-sample-update/作为起点,而使用旧版http://www.hjgode.de/wp/2009/05/12/enhanced-gps-sampe/

示例的主要问题是它不使用回调(委托)来更新UI。如果从后台线程触发事件处理程序,则处理程序无法直接更新UI。以下是我总是用来从处理程序更新UI的内容:

    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";
        }
    }