特に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);
});
アプリは実行されますが、問題はサブスクライブ内のコードが 1 回しか発生しないことです。サブジェクトにブレーク ポイントを設定すると、常にトリガーされることがわかります。
私は何を間違っていますか?
[編集]
わかりました、何が間違っていたかがわかります。コード (これは私のものではありません) は、DistinctUntilChanged() を使用しています。簡単に読んだことから、これは同じ値がサブスクライバーに送り出されるのを止めると思いますか? 電話が同じ位置にあり、GeoCoordinateが変更されていない場合、私がそれを使用していた目的、位置追跡に関しては、それをサブスクライバーに送信しても意味がないので、それを防ぐだけですか?