Я пытаюсь использовать пару классов Subject для запуска 2 наборов последовательностей событий.Приложение представляет собой приложение для рисования, где один субъект запускает OnNext, когда пользователь нажимает кнопку, а другой субъект запускает OnNext, когда пользователь выполняет двойной щелчок.Я написал методы GetClick & GetDoubleClick, которые возвращают наблюдаемое для вышеупомянутых случаев и, кажется, работают нормально.Проблема в приведенном ниже коде состоит в том, что если вызвать onNext первого субъекта для запуска последовательности щелчков, наблюдаемый двойной щелчок никогда не вызывается.Если я закомментирую вызов onNext по первому вопросу, наблюдаемый двойной щелчок действительно будет запущен, как и ожидалось.Может кто-нибудь взглянуть на код ниже и их идеи / мысли вместе?Я добавил комментарии к проблемной строке кода ниже
public static KeyValuePair<IObservable<MapPoint>, IObservable<PointCollection>>
DrawPointsDynamic(this Map map)
{
PointCollection pc = new PointCollection();
Subject<Point> ptSubject = new Subject<Point>();
Subject<PointCollection> ptsSubject = new Subject<PointCollection>();
IObservable<Point> ptObs = ptSubject.Hide();
IObservable<PointCollection> ptsObs = ptsSubject.Hide();
map.GetClick()
.Subscribe(next =>
{
var p = map.ScreenToMap(next.EventArgs.GetPosition(map));
ptSubject.OnNext(p); //If I leave this line in, the subscription to the doubleClick below does not get called. If comment it out, the subscription below does get called as expected;
pc.Add(p);
});
map.GetDoubleClick()
.Subscribe(next =>
{
ptsSubject.OnNext(pc);
pc = new ESRI.ArcGIS.Client.Geometry.PointCollection();
});
KeyValuePair<IObservable<MapPoint>, IObservable<ESRI.ArcGIS.Client.Geometry.PointCollection>> obs =
new KeyValuePair<IObservable<MapPoint>, IObservable<ESRI.ArcGIS.Client.Geometry.PointCollection>>
(ptObs, ptsObs);
return obs;
}
Кроме того, я не совсем уверен, что делает Hide ().Я просто использую его, так как все примеры, кажется, имеют их.Что на самом деле означает скрытие личности?