C# &引用;“正在关闭管道”;使用WinRT地理定位器时

C# &引用;“正在关闭管道”;使用WinRT地理定位器时,c#,geolocation,windows-runtime,C#,Geolocation,Windows Runtime,使用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(); _Po

使用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 */ 
}
这是在模拟器中,但在本地机器上运行时也是如此。 通常,此错误不会导致中断。 它只是突然终止了应用程序。 当它确实导致了一个中断。
这就是由此产生的错误

我发现这是在您的本地化设置为“模拟”时发生的,如果您使用设备模拟器运行应用程序,您可以通过单击世界图标(在显示和相机设置之间)来禁用此功能,然后取消选中“使用模拟位置”选项

我认为这个问题的根本原因是GeoLocator正在使用Location API


您得到的错误是来自WIN32的HRESULT_(error_NO_DATA),它似乎映射到友好(但在本例中没有帮助)字符串“管道正在关闭”。这是当平台没有看到您的传感器提供有效报告时的预期错误。

我在项目中也遇到了类似的偶发异常。看我附上的图片截图

这是一个对我有效的解决方案,但我不确定它是否对其他人有效

这是我以前的代码:

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;
}

除非您发布代码,否则我们无法帮助您。当你发布代码时,我将取消我的否决票。@Jerry Nixon很好,你的代码示例帮助我理解了无用的winrt错误message@Jerry尼克松你能帮我解决这个问题吗?当我在带有蜂窝网络的平板电脑上运行windows应用商店应用程序时,我遇到了这个错误。因此,当出现任何异常时,请返回
null
?我们在平板电脑上从何处获得此选项?@KinjanBhavsar您找到了该选项吗?@Musa我在互联网上查找并发现:希望有帮助。