좋아요. 반응성 확장이있는 다른 게임, 특히 wp7이있는 게임입니다. 나는하여 GeoCoordinateWatcher의 높은 게재 순위 찾고 있어요WP7 - RX를 사용하면 구독 만 트리거되지만 OnNext()는 항상 트리거링합니까?
나는 그렇게
MyLocation.StartGettingLocations()
.Subscribe(pos =>
{
// Do something with the position
PlotLine.Locations.Add(pos);
bingMap.SetView(pos, 15);
});
앱 실행처럼 가입하고 있지만, 문제가 발생에서만 구독 측의 코드 그래서
var subject = new BehaviorSubject<GeoCoordinate>(GeoCoordinate.Unknown);
var watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.Default) { MovementThreshold = 0 };
watcher.PositionChanged += (o, args) =>
{
var newLocation = args.Position.Location;
if ((DateTime.Now - args.Position.Timestamp.DateTime) < locationTimeout)
{
subject.OnNext(newLocation);
}
};
같은 이벤트를 변경 한 번은 아직 내가 주제에 중단 점을 넣으면 .NextNext (newLocation), 나는 끊임없이 그 트리거가 발생하는 것을 본다.
내가 뭘 잘못하고 있니?
[편집]
내가 잘못 무엇인지 볼 수 있습니다 좋아, (그냥 학습 내 메신저되지 않습니다) 코드, DistinctUntilChanged()를 사용합니다. 간단히 읽는 것에서 이것으로 구독자에게 동일한 가치가 나오는 것을 멈출 것이라고 가정합니다. 그래서 내가 전화를 사용하고있는 위치, 위치 추적, 전화가 같은 위치에 있고 GeoCoordinate가 변경되지 않았다면 구독자에게 보내는 것은 무의미 할 것입니다.
이 두 코드 스 니펫의 관련성에 대한 정보는 도움이됩니다. 첫 번째 스 니펫은 MyLocation입니다 .StartGettingLocations는 두 번째 코드에서 참조됩니까? –
죄송합니다. 직장을 떠나기 전에 빨리 생각해보십시오. 편집에서 볼 수 있다면 문제를 이해해야합니다. – Gaz83
@ Gaz98 : 당신이 맞습니다. 값이 변경되지 않으면 관찰자에게 새로운 값을 제공하지 않습니다. .DistinctUntilChanged() 비헤이비어를 제거하면 동일한 값이 옵저버에 푸시됩니다. –