0

オンラインでこの問題の解決策を見つけることはできません。 Windows Embedded Handheld 6.5を実行しているデバイスがあります。私は私のデバイスではなく、エミュレータにコードを展開 Windows Moible 6.5 SDK GPSサンプルバグ

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

の下に位置ソリューション、および見解IVEは、これを変更することをお勧めします

Invoke(updateDataHandler); 

でのnull参照の例外を除いて、コードの切断を実行します〜

BeginInvoke(updateDataHandler); 

しかし、コードはNullRefreceExceptionでMainで壊れます。

Application.Run(new Form1()); 

誰にでもこの解決策が見つかりましたか?

答えて

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"; 
     } 
    } 
関連する問題