Тайм-аут геолокации 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, но это не помогает. Кажется, что приложение затягивается с каждым вызовом, чтобы вычислить расстояние. Есть идеи?
0 ответов
Как увеличить тайм-аут для этой задачи, чтобы она возвращала все элементы, даже если это занимает больше времени?
Если вы хотите достичь этой цели, вы можете использовать для этого Task.Delay и Task.WhenAny.
Вот та же статья, которую вы можете посмотреть: