Nito.AsyncEx.SingleDisposable<T>
A base class for disposables that need exactly-once semantics in a threadsafe way.
namespace Nito.AsyncEx
{
public abstract class SingleDisposable<T> where T : class
{
protected SingleDisposable(T context);
}
}