好的,我正在使用响应式扩展进行另一场比赛,特别是 wp7。
我正在查看 GeoCoordinateWatcher 位置更改事件,如下所示
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);
}
};
我像这样订阅
MyLocation.StartGettingLocations()
.Subscribe(pos =>
{
// Do something with the position
PlotLine.Locations.Add(pos);
bingMap.SetView(pos, 15);
});
该应用程序运行,但问题是订阅侧的代码只发生一次,如果我在主题中放置一个断点。OnNext(newLocation),我看到它不断被触发。
我究竟做错了什么?
[编辑]
好的,我可以看到出了什么问题,代码(这不是我的,我只是从中学习),使用 DistinctUntilChanged()。我假设,通过简要阅读,这会阻止向订阅者输出相同的价值?所以就我使用它的目的而言,位置跟踪,如果手机在同一个位置并且地理坐标没有改变,那么将它发送给用户是没有意义的,所以它只是阻止它?