xamarin.forms - Xamarin Essentials 地理位置超时问题
问题描述
我有一个多平台应用程序,它可以提取当前位置并在循环中使用它来计算到每个项目的距离。它正在使用
wineriesView.ItemsSource = await App.WineryManager.GetWineries(seltyp,selval,selwrs);
加载包含纬度和经度等的每个项目。它在呼唤
public Task<List<WineryItem>> GetWineries(string typ, string val, int wrs) { return restService.ReadWineries(typ,val,wrs); }
然后调用
public async Task<List> ReadWineries(string typ, string val, int wrs)
{
var position = await Geolocation.GetLocationAsync();
var uri = new Uri(string.Format(Constants.WineriesUrl, "wineries_by_region.php?region=piedmont"));
var urio = new Uri(string.Format(Constants.OnlinesUrl, "onlines_by_id.php?id=12"));
Items = new List<WineryItem>();
OItems = new List<OnlineItem>();
...
var content = await response.Content.ReadAsStringAsync();
Records = JsonConvert.DeserializeObject<WineryRecords>(content);
Items = new List<WineryItem>();
foreach (var record in Records.records)
{
Location winePosition = new Location(Convert.ToDouble(record.Latitude), Convert.ToDouble(record.Longitude));
double dblDistance = Location.CalculateDistance(position, winePosition, DistanceUnits.Miles);
...
if (dblDistance > 0 && dblDistance < 1000)
{
item.intDistance = Convert.ToInt16(dblDistance);
item.strDistance = dblDistance.ToString("N0")+"Mi";
} else
{
item.intDistance = 0;
item.strDistance = "--";
}
Items.Add(item);
ReadWineries 执行所有显示的代码,它只返回 10 项到列表中,而如果我注释地理位置、位置和计算距离代码,它将返回 50+ 的整个列表。如何延长此任务的超时时间,以便即使需要更长的时间它也会返回所有项目?我正在 Android 设备上调试它。如果我使用 iOS 设备会有所不同吗?最后,它需要在两者上运行。我曾尝试设置 getlocation 的准确性,但这无济于事。似乎该应用程序在每次调用计算距离时都陷入了困境。有任何想法吗?
解决方案
如何延长此任务的超时时间,以便即使需要更长的时间它也会返回所有项目?
如果你想达到这个目标,你可以使用Task.Delay和Task.WhenAny来做到这一点。
这是您可以查看的同一篇文章:
推荐阅读
- go - 如何将 TestContext 传递给不接受 Gin 上下文作为参数的方法?
- flac - 使用mlt框架导出flac文件播放时间错误
- android - 属性返回与嵌套 RecyclerView.Adapter 中的实际资源不同的颜色 ID
- java - 如何检查Java中的文本字段中是否输入了某个值
- python - 我想知道如何在 Pytorch 中处理 LSTM
- sql - SQL将列值作为枚举返回-来自另一列的GetValue()字段
- c# - 关于 ASP C# 应用程序和回发问题的 Crystal Report
- javascript - 为什么我必须使用方括号注释访问我的对象属性
- sql - 在已经过滤日期的视图上查询 trunc(date)
- java - SpringRest api 自动添加 {? (大括号)在 PathVariable 之后