Тайм-аут геолокации 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.

Вот та же статья, которую вы можете посмотреть:

C# Xamarin Forms - выполнение задачи с тайм-аутом

Другие вопросы по тегам