Files
Sharp7Reactive/Sharp7.Rx/Basics/DisposableItem.cs
2020-01-17 14:49:01 +01:00

38 lines
798 B
C#

using System;
using System.Linq;
namespace Sharp7.Rx.Basics
{
internal class DisposableItem<TValue> : IDisposable
{
private readonly Action disposeAction;
bool disposed;
public DisposableItem(IObservable<TValue> observable, Action disposeAction)
{
this.disposeAction = disposeAction;
Observable = observable;
}
public IObservable<TValue> Observable { get; }
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (disposed) return;
if (disposing)
{
disposeAction();
}
disposed = true;
}
}
}