我有一个多平台应用程序,它可以提取当前位置并在循环中使用它来计算到每个项目的距离。它正在使用
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上设置精度,但这无济于事。似乎该应用程序陷入了每次调用来计算距离的困境。有什么想法吗?
答案 0 :(得分:0)
如何延长此任务的超时时间,以便即使花费更长的时间也可以返回所有项目?
如果要实现此目标,可以使用 Task.Delay 和 Task.WhenAny 来实现。
这是您可以看一下的同一篇文章: