Я пытаюсь предупредить пользователя, когда GPS недоступен (в основном, когда у них отключены службы геолокации)
Ниже приведено мое заявление о поиске, и я заметил,что в эмуляторе я перешел в состояние "", поэтому я не мог вернуть ошибку здесь, поскольку она все еще работала, как ожидалось
void MyStatusChanged(GeoPositionStatusChangedEventArgs e)
{
switch (e.Status)
{
case GeoPositionStatus.Disabled:
client.ClientCallBackWithError("fail");
break;
case GeoPositionStatus.Initializing:
var y = "initializing location service,";
break;
case GeoPositionStatus.NoData:
// The location service is working, but it cannot get location data
// Alert the user and enable the Stop Location button
var z = "data unavailable,";
break;
case GeoPositionStatus.Ready:
var zzz = "receiving data, ";
break;
}
}
Так что внутри моей вызывающей страницы / представления я решил, что, возможно, я мог ждать 10секунд, чтобы увидеть, ударил ли он когда-нибудь или нет ... и если нет, я мог бы просто выдать ошибку / etc
предупреждение о большом взломе, поскольку я теряю надежду
private void FindByGps_Click(object sender, RoutedEventArgs e)
{
gpsStarted = false;
gpsEnded = false;
progressHelper.StartProgressStuff(this.progress);
gpsStarted = true;
gpsLocationLookupService.StartLocationService();
this.Dispatcher.BeginInvoke(() => ListenForCallbackDuringGpsLookup(0));
}
private object ListenForCallbackDuringGpsLookup(int counter)
{
if (gpsStarted && !gpsEnded && counter < 12)
{
//keep looking until the timer runs out ...
counter = counter + 1;
this.Dispatcher.BeginInvoke(() => SleepForASec());
ListenForCallbackDuringGpsLookup(counter);
}
else if (gpsStarted && gpsEnded)
{
gpsStarted = false;
gpsEnded = false;
}else{
this.Dispatcher.BeginInvoke(() => SetCurrentLocationAndLaunchFindKiosks(null, "Failed to locate you by GPS"));
}
return null;
}
private object SleepForASec()
{
Thread.Sleep(1000);
return null;
}
но во время второго раскручивания потока кажется, что приложение блокируется до тех пор, пока не завершится работа с потоками.
Так что мой вопрос - как СЛЕДУЕТ ловить этот тип ошибок GPS, чтобы обеспечить правильную обратную связь