Я использую реактивные расширения в моем приложении wp7, которое я создаю, и я хочу получить текущее местоположение через определенные промежутки времени (интервалы основаны на пользовательской настройке). В этом примере можно сказать, что через каждые 5 секунд я хочу узнать текущее местоположение из GeoCoordinateWatcher.Получить текущее местоположение после интервала, используя RX
Я прочитал несколько мест, которые я могу использовать. Delay (5 Seconds), но разве это не просто задерживает поток изменений позиции? Поскольку я только после текущей позиции, будет. Отложить (5 секунд) .Last() работать за то, что я хочу?
Мой код до сих пор
if (LocationServices == null)
LocationServices = new GeoCoordinateWatcher(GeoPositionAccuracy.High)
{
MovementThreshold = 2
};
// Take the first ready status from the GeoCoordinateWatcher
var status = (from o in Observable.FromEvent<GeoPositionStatusChangedEventArgs> LocationServices, "StatusChanged")
where o.EventArgs.Status == GeoPositionStatus.Ready
select o);
status.Subscribe();
var pos = (from s in status
from p in Observable.FromEvent<GeoPositionChangedEventArgs<GeoCoordinate>>(LocationServices, "PositionChanged")
select p.EventArgs.Position); // Do something here to delay?
pos.Subscribe(LastPos =>
{
// Do something with LastPos
}
);
LocationServices.Start();
Я думаю, что-то, как это будет работать?
var pos = (from s in status
from p in Observable.FromEvent<GeoPositionChangedEventArgs<GeoCoordinate>>(LocationServices, "PositionChanged")
select p.EventArgs.Position).Delay(var pos = (from s in status
from p in Observable.FromEvent<GeoPositionChangedEventArgs<GeoCoordinate>>(LocationServices, "PositionChanged")
select p.EventArgs.Position).TakeLast(1).Delay(new TimeSpan(0,0,5));
pos.Subscribe(Lastpos =>
{
// Do something with Lastpos
}
);;
Edit: неа не работает
Ницца! спасибо за это, я буду пристально смотреть, когда я получу сегодня вечером и посмотрю, смогу ли я заставить его работать. Отчитается с результатом – Gaz83
Как вы остановите все это, как только вы избавитесь от GeoCoordinateWatcher (LocationServices)? – Gaz83
@ Gaz83 Статус может переключиться на NoData, и в этом случае вы можете следить за этим. В противном случае вам придется иметь доступ к тому, чтобы распоряжаться наблюдателем. –