副題が付いていますが、続き物になるなんてことは無いです。
LINQですよLINQ!いや、LINQはわかる。
データを流れるように扱うLINQはわかる。Rxもその発想だってのもまあ、分かる。
わかるんだけど難しい。難しいから挑戦する、そんな日曜の昼下がり。
Rxらしく1行です。
rxgps.cs
var geoWatcher = new GeoCoordinateWatcher();
Observable.FromEvent<GeoPositionChangedEventArgs<GeoCoordinate>>(geoWatcher, "PositionChanged").
ObserveOnDispatcher().
Select(ev => ev.EventArgs.Position.Location).
Take(1).
Subscribe(location => Debug.WriteLine(location.Longitude.ToString()), () => { Debug.WriteLine("completed"); geoWatcher.Stop(); });
geoWatcher.Start();
take(1)
・・・?
なんで、take(1)
なん?
これ外すと、onCompleted
が呼ばれない。
あれ?でも、Subscribe
は呼ばれてるよ?データの処理は終わったんじゃないの??
Rx難しいねー