<PackageReference Include="Relativity.Transfer.Client" Version="7.0.8" />

ScheduledItem<TAbsolute>

public abstract class ScheduledItem<TAbsolute> : IScheduledItem<TAbsolute>, IComparable<ScheduledItem<TAbsolute>> where TAbsolute : IComparable<TAbsolute>
using System.Collections.Generic; using System.Reactive.Disposables; namespace System.Reactive.Concurrency { public abstract class ScheduledItem<TAbsolute> : IScheduledItem<TAbsolute>, IComparable<ScheduledItem<TAbsolute>> where TAbsolute : IComparable<TAbsolute> { private readonly SingleAssignmentDisposable _disposable = new SingleAssignmentDisposable(); private readonly IComparer<TAbsolute> _comparer; public TAbsolute DueTime { get; } public bool IsCanceled => _disposable.IsDisposed; protected ScheduledItem(TAbsolute dueTime, IComparer<TAbsolute> comparer) { if (comparer == null) throw new ArgumentNullException("comparer"); DueTime = dueTime; _comparer = comparer; } public void Invoke() { if (!_disposable.IsDisposed) _disposable.Disposable = InvokeCore(); } protected abstract IDisposable InvokeCore(); public int CompareTo(ScheduledItem<TAbsolute> other) { if ((object)other == null) return 1; return _comparer.Compare(DueTime, other.DueTime); } public static bool operator <(ScheduledItem<TAbsolute> left, ScheduledItem<TAbsolute> right) { return Comparer<ScheduledItem<TAbsolute>>.Default.Compare(left, right) < 0; } public static bool operator <=(ScheduledItem<TAbsolute> left, ScheduledItem<TAbsolute> right) { return Comparer<ScheduledItem<TAbsolute>>.Default.Compare(left, right) <= 0; } public static bool operator >(ScheduledItem<TAbsolute> left, ScheduledItem<TAbsolute> right) { return Comparer<ScheduledItem<TAbsolute>>.Default.Compare(left, right) > 0; } public static bool operator >=(ScheduledItem<TAbsolute> left, ScheduledItem<TAbsolute> right) { return Comparer<ScheduledItem<TAbsolute>>.Default.Compare(left, right) >= 0; } public static bool operator ==(ScheduledItem<TAbsolute> left, ScheduledItem<TAbsolute> right) { return (object)left == right; } public static bool operator !=(ScheduledItem<TAbsolute> left, ScheduledItem<TAbsolute> right) { return !(left == right); } public override bool Equals(object obj) { return this == obj; } public override int GetHashCode() { return base.GetHashCode(); } public void Cancel() { _disposable.Dispose(); } } }