Je suis encore un peu nouveau à Rx et j'ai du mal à comprendre comment exprimer cet abonnement (apparemment) simple. Je cherche quelque chose comme ceci:Comment combiner des événements intermédiaires dans un flux Reactive Framework?
- Début: InTransaction.Where (inTransaction => inTransaction)
- Si: itemChanged ou sur FlagChanged, laissez Changé = true
- Fin: InTransaction.Where (inTransaction =>! inTransaction)
Tous ces éléments sont observables. Donc, dès le début d'une transaction, je veux commencer à prêter attention aux notifications de changement, et peu importe le nombre d'entre elles, je veux juste me rappeler que tout a été reçu. Lorsque la transaction se termine, je veux appeler mon gestionnaire pour mettre à jour l'état visuel.
Il y a beaucoup d'exemples amusants en ligne montrant comment faire cela pour les dragages de souris. Le seul problème que j'ai est que je ne veux pas avoir tous les événements modifiés. Je veux juste savoir si certains ont été touchés avant la fin de la transaction.
Quelqu'un peut-il m'aider à me diriger sur la bonne voie?
Mise à jour: mon algorithme actuel ressemble à ceci:
bool pendingRefresh = false;
Observable
.Merge(
_selectionChanged,
_objectManager
.PropertiesChanged
.Where(objects => objects.Contains(_selectedObject)))
.Subscribe(_ => pendingRefresh = true);
_actionManager
.IsInTransaction.Where(isIn => !isIn)
.Throttle(TimeSpan.FromSeconds(0.15))
.Subscribe(_ =>
{
if (pendingRefresh)
{
pendingRefresh = false;
Refresh();
}
});
fonctionne très bien, mais je me demandais si je pouvais sortir avec un seul abonnement.