私は明らかに緯度と経度を取得するために使用する GPS クラスを持っています。
GPS の状態または位置が変更されると、UpdateData() が呼び出されます。したがって、緯度と経度の両方が有効であることを確認してから、DataReady bool を true に等しくします。
したがって、このコードをかなり n00b の方法で使用します。タイマー (Windows フォームのもの) を使用し、10 秒ごとに getGPSCoordinates() をチェックして、有効な場所が見つかったかどうかを確認し (getGPSCoordinates() が null ではない)、そうでない場合は、残りのコード。これは、クリアな gps 信号を取得するのに 10 秒から 1 分程度かかる場合があるため、使用されます。
したがって、これは正常に機能しますが、これが正しい方法ではないことはわかっています。GPS ビジネス全体を別のスレッドで実行し、位置が変更されてデータの準備が整ったことをメイン スレッドに通知する必要があると思います。
この種のビジネスを処理する正しい方法を教えてもらえますか? IAsyncResult
メインスレッドに通知するために 使用する必要がありますか?
bool DataReady = false;
private void UpdateData()
{
if (gps.Opened)
{
if (position != null)
{
if (position.LatitudeValid)
{
Latitude = position.Latitude.ToString();
}
if (position.LongitudeValid)
{
Longitude = position.Longitude.ToString();
}
if (Latitude != null && Longitude != null)
DataReady = true;
}
}
public string getGPSCoordinates()
{
if (DataReady)
{
return String.Format("http://maps.google.com/maps/api/staticmap?sensor=false&size=500x500&markers=color:red|label:A|{0},{1}&zoom=15&maptype=hybrid", Latitude, Longitude);
}
else
return null;
}
}