Browse Source

Use LastOrDefaultAsync for completion.

pull/464/head
Steven Kirk 11 years ago
parent
commit
6b99bcf30b
  1. 11
      src/Markup/Perspex.Markup/Data/ExpressionObserver.cs
  2. 4
      src/Perspex.Styling/Styling/ActivatedObservable.cs

11
src/Markup/Perspex.Markup/Data/ExpressionObserver.cs

@ -197,11 +197,11 @@ namespace Perspex.Markup.Data
if (_rootObservable != null)
{
source = source.TakeUntil(Complete(_rootObservable));
source = source.TakeUntil(_rootObservable.LastOrDefaultAsync());
}
else if (_update != null)
{
source = source.TakeUntil(Complete(_update));
source = source.TakeUntil(_update.LastOrDefaultAsync());
}
var subscription = source.Subscribe(observer);
@ -232,13 +232,6 @@ namespace Perspex.Markup.Data
}
}
private static IObservable<Unit> Complete<T>(IObservable<T> input)
{
return Observable.Merge(
input.TakeLast(1).Select(_ => Unit.Default),
input.IsEmpty().Where(x => x).Select(_ => Unit.Default));
}
private void IncrementCount()
{
if (_count++ == 0 && _node != null)

4
src/Perspex.Styling/Styling/ActivatedObservable.cs

@ -62,8 +62,8 @@ namespace Perspex.Styling
{
Contract.Requires<ArgumentNullException>(observer != null);
var sourceCompleted = Source.TakeLast(1).Select(_ => Unit.Default);
var activatorCompleted = Activator.TakeLast(1).Select(_ => Unit.Default);
var sourceCompleted = Source.LastOrDefaultAsync().Select(_ => Unit.Default);
var activatorCompleted = Activator.LastOrDefaultAsync().Select(_ => Unit.Default);
var completed = sourceCompleted.Merge(activatorCompleted);
return Activator

Loading…
Cancel
Save