<PackageReference Include="System.Reactive" Version="4.1.3" />

VirtualTimeSchedulerExtensions

public static class VirtualTimeSchedulerExtensions
Provides a set of extension methods for virtual time scheduling.
using System.Reactive.Disposables; namespace System.Reactive.Concurrency { public static class VirtualTimeSchedulerExtensions { public static IDisposable ScheduleRelative<TAbsolute, TRelative>(this VirtualTimeSchedulerBase<TAbsolute, TRelative> scheduler, TRelative dueTime, Action action) where TAbsolute : IComparable<TAbsolute> { if (scheduler == null) throw new ArgumentNullException("scheduler"); if (action == null) throw new ArgumentNullException("action"); return scheduler.ScheduleRelative(action, dueTime, (IScheduler s, Action a) => Invoke(s, a)); } public static IDisposable ScheduleAbsolute<TAbsolute, TRelative>(this VirtualTimeSchedulerBase<TAbsolute, TRelative> scheduler, TAbsolute dueTime, Action action) where TAbsolute : IComparable<TAbsolute> { if (scheduler == null) throw new ArgumentNullException("scheduler"); if (action == null) throw new ArgumentNullException("action"); return scheduler.ScheduleAbsolute(action, dueTime, (IScheduler s, Action a) => Invoke(s, a)); } private static IDisposable Invoke(IScheduler scheduler, Action action) { action(); return Disposable.Empty; } } }