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 正在使用 Location API。

您得到的错误是 HRESULT_FROM_WIN32(ERROR_NO_DATA),它似乎映射到友好的(但在这种情况下没有帮助)字符串“管道正在关闭”。当平台没有看到您的传感器提供有效报告时,这是预期的错误。

于 2013-07-25T08:45:18.983 回答
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 回答