3 changed files with 62 additions and 6 deletions
@ -0,0 +1,40 @@ |
|||
using System; |
|||
using Avalonia.Threading; |
|||
|
|||
namespace Avalonia.Reactive |
|||
{ |
|||
public class DisposeOnNextObservable<T> : LightweightObservableBase<T>, IObserver<T> where T : IDisposable |
|||
{ |
|||
private IDisposable lastValue; |
|||
|
|||
private void ValueNext(T value) |
|||
{ |
|||
this.PublishNext(value); |
|||
lastValue?.Dispose(); |
|||
lastValue = value; |
|||
} |
|||
|
|||
public void OnCompleted() |
|||
{ |
|||
this.PublishCompleted(); |
|||
} |
|||
|
|||
public void OnError(Exception error) |
|||
{ |
|||
this.PublishError(error); |
|||
} |
|||
|
|||
void IObserver<T>.OnNext(T value) |
|||
{ |
|||
ValueNext(value); |
|||
} |
|||
|
|||
protected override void Initialize() |
|||
{ |
|||
} |
|||
|
|||
protected override void Deinitialize() |
|||
{ |
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue