在 Windows 应用商店应用程序(Windows 8.1)中使用 GeoLocator 时出现“管道正在关闭”错误?
Posted
技术标签:
【中文标题】在 Windows 应用商店应用程序(Windows 8.1)中使用 GeoLocator 时出现“管道正在关闭”错误?【英文标题】:"The pipe is being closed" error when using GeoLocator in Windows Store App(Windows 8.1)? 【发布时间】:2016-03-04 15:31:12 【问题描述】:我正在使用 Windows 8.1 应用程序,我正在使用下面提到的代码查找用户的当前位置。现在,当我使用蜂窝网络在平板电脑中运行我的应用程序时,应用程序崩溃了,但它在 Wifi 上运行良好。有人可以为此提出解决方案吗?
geolocator = new Geolocator();
geolocator.DesiredAccuracy = PositionAccuracy.Default;
geolocator.DesiredAccuracyInMeters = 1000;
geolocator.MovementThreshold = 5;
geolocator.ReportInterval = 500;
try
Geoposition mygeoPosition = await geolocator.GetGeopositionAsync();
catch(UnauthorizedAccessException ex)
UserMessageUtil.ShowMessage("Location is disabled in Settings");
await Launcher.LaunchUriAsync(new Uri("ms-settings-location:"));
geolocator.PositionChanged += geolocator_PositionChanged;
我总是检查笔记本电脑,所以我过去没有遇到这个问题,但现在我有一台同时具有 3G 和 WIFI 连接的平板电脑,当我在平板电脑上运行应用程序并尝试获取当前位置时,错误来了.
更新
我有时也得到组或资源未处于正确状态以执行请求的操作。 (HRESULT 异常:0x8007139F) 在线错误
Geoposition mygeoPosition = await geolocator.GetGeopositionAsync();
当我连接到蜂窝网络
时,我遇到了这两个错误【问题讨论】:
【参考方案1】:从使用更大的移动阈值开始。大多数 GPS 设备的精度只有 15 米。将移动阈值设置为 5 可能太小并导致问题。
还可以看看使用位置精度枚举器之一:
geolocator.DesiredAccuracy = Windows.Devices.Geolocation.PositionAccuracy.high;
【讨论】:
@rbrunditt 我尝试添加这两个参数,但它仍然给了我错误。是否有可能因为我使用免费的 Bing Map 密钥而导致问题? 这与 Bing 地图无关。 Geolocation API 是与 Bing 地图无关的核心 Windows Phone 库。【参考方案2】:这些都是非常低级的 Windows 错误代码。任何失败都与您的代码相去甚远,大致是设备驱动程序级别。或者它是中间软件层重复使用的错误代码,这是 WinRT 中非常常见的犯罪。您必须记住,网络中可能会出现很多很多问题,而且您并不总是能得到出色的诊断结果。嗯,几乎从来没有。
“管道正在关闭”是 ERROR_NO_DATA。该错误标识符很可能比消息更具代表性。
“组或资源未处于正确状态”为 ERROR_INVALID_STATE。同样,该标识符比消息更明智。
我的电话:您的蜂窝网络连接不稳定。要么是因为收音机参差不齐,要么是因为中间有蹩脚的反恶意软件。你可以很容易地消除后者。但前者总是会发生在某人的机器上。因此,请务必编写您的代码以应对此类网络事故,不要不要只是捕获 UnauthorizedAccessException。为 Exception 编写另一个 catch 并显示“我们很抱歉,服务暂时不可用”样式消息。只要用户知道,也许您可以通过记住以前的位置来创可贴。
【讨论】:
谢谢汉斯。如果设备没有 GPS 传感器或 GPS 传感器被禁用,是否有可能发生此错误? 是的,很有可能。如果它有一个正常工作的 GPS 传感器,那么它就不需要任何帮助。以上是关于在 Windows 应用商店应用程序(Windows 8.1)中使用 GeoLocator 时出现“管道正在关闭”错误?的主要内容,如果未能解决你的问题,请参考以下文章