Ричард (и другие),
Итак, у меня есть код, возвращающий местоположение, и у меня есть подписывающий код вызова.Вот (надеюсь) последний вопрос.Когда я вызываю GetGPSCoordinates, следующий оператор выполняется немедленно, не дожидаясь окончания подписки.Вот пример в обработчике события кнопки OnClick.
Location newLoc = new Location();
GetGPSCoordinates(this.Input.Text).ObserveOnDispatcher().Subscribe(x =>
{
if (x.Results.Count > 0 && x.Results[0].Locations.Count > 0)
{
newLoc = x.Results[0].Locations[0];
Output.Text = "Latitude: " + newLoc.Latitude.ToString() +
", Longtude: " + newLoc.Longitude.ToString();
}
else
{
Output.Text = "Invalid address";
}
});
Output.Text = " Outside of subscribe --- Latitude: " + newLoc.Latitude.ToString() +
", Longtude: " + newLoc.Longitude.ToString();
Назначение Output.Text, имеющее место вне Subscribe, выполняется до завершения Subscribe и отображает нули, а затем тот, что в подписке, отображает новое местоположениеinfo.
Цель этого процесса - получить информацию о местоположении, которая затем будет сохранена в записи базы данных, и я последовательно обрабатываю несколько адресов в цикле Foreach.Я выбрал Rx Extensions в качестве решения, чтобы избежать проблемы асинхронного обратного вызова как ловушки кодирования.Но, похоже, я обменял одну ловушку на другую.
Мысли, комментарии, предложения?