6

WinRT Geolocator を使用すると、散発的に次のエラーが発生します。

{"The pipe is being closed. (Exception from HRESULT: 0x800700E8)"}

繰り返しますが、これは散発的です。助言がありますか?

Windows.Devices.Geolocation.Geoposition _Postion = null;
try
{
    var _Locator = new Windows.Devices.Geolocation.Geolocator();
    _Postion = await _Locator.GetGeopositionAsync();
}
catch { /* continue, null okay */ }

if (_Postion == null)
{ 
    /* use alternate */ 
}
else
{
    /* use location */ 
}

これはシミュレーターにありますが、ローカル マシンで実行する場合も同様です。通常、このエラーによって中断されることはありません。アプリが突然終了するだけです。それが休憩につながるとき。それが結果のエラーです。

4

3 に答える 3

1

これは、ローカリゼーションが「シミュレート」に設定されている場合に発生することがわかりました。デバイス シミュレーターを使用してアプリを実行している場合は、ワールド アイコン (ディスプレイとカメラの設定の間) をクリックしてこれを無効にし、「シミュレートされた場所を使用する」オプションをオフにします。

于 2012-07-24T03:19:43.227 に答える
0

私のプロジェクトでも同様の散発的な例外に直面しました。添付した画像のスクリーンショットを見てください。ここに画像の説明を入力

これが私にとってはうまくいった解決策ですが、他の人にとってうまくいくかどうかはわかりません。

これは以前の私のコードでした:

Geolocator loc = new Geolocator();
try
{
      loc.DesiredAccuracy = PositionAccuracy.High;

      Geoposition pos = await loc.GetGeopositionAsync();
      var lat = pos.Coordinate.Point.Position.Latitude;
      var lang = pos.Coordinate.Point.Position.Longitude;
      Status = loc.LocationStatus;

      return GetGpsInfoObject(pos);
}
catch (System.UnauthorizedAccessException)
{
      return null;
}

コードを次のように変更しました。

Geolocator loc = new Geolocator();
try
{
       loc.DesiredAccuracy = PositionAccuracy.High;

       Geoposition pos = await loc.GetGeopositionAsync();
       var lat = pos.Coordinate.Point.Position.Latitude;
       var lang = pos.Coordinate.Point.Position.Longitude;
       Status = loc.LocationStatus;

       return GetGpsInfoObject(pos);
}
catch (Exception)
{
          return null;
}
于 2015-05-07T11:09:49.853 に答える