Windows Moible 6.5 SDK GPS 样本被窃听
Windows Moible 6.5 SDK GPS Sample Bugged
我似乎无法在网上找到解决此问题的好方法。我的设备是 运行ning 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());
有人找到解决办法了吗?
你修改过代码了吗? updateDataHandler 在 Form_Load:
中初始化
private void Form1_Load(object sender, System.EventArgs e)
{
updateDataHandler = new EventHandler(UpdateData);
这样对象就不会为 NULL。但是代码还有其他问题,尤其是 Samples.Location class。您可以改用 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/
示例的主要问题是它不使用回调(委托)来更新 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";
}
}
我似乎无法在网上找到解决此问题的好方法。我的设备是 运行ning 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());
有人找到解决办法了吗?
你修改过代码了吗? updateDataHandler 在 Form_Load:
中初始化 private void Form1_Load(object sender, System.EventArgs e)
{
updateDataHandler = new EventHandler(UpdateData);
这样对象就不会为 NULL。但是代码还有其他问题,尤其是 Samples.Location class。您可以改用 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/
示例的主要问题是它不使用回调(委托)来更新 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";
}
}