public static TickWorker RegisterTick(Action method, TimeSpan interval, bool active) { if (method == null) { throw new ArgumentNullException(nameof(method)); } if (interval <= TimeSpan.Zero) { throw new ArgumentException("The parameter must be at least '1'", nameof(interval)); } var worker = new TickWorker(method, interval); worker.Active = active; lock (workList) { workList.Add(worker); curTick = workList.Min(w => w.Interval); if (!run) { run = true; tickThread.Start(); } } return(worker); }
public static void UnregisterTicker(TickWorker worker) { if (worker == null) { throw new ArgumentNullException(nameof(worker)); } lock (workList) { RemoveUnlocked(worker); } }
public static void UnregisterTicker(TickWorker worker) { if (worker is null) { throw new ArgumentNullException(nameof(worker)); } lock (tickLock) { workList.Remove(worker); worker.Timer.Stop(); } }
public static void UnregisterTicker(TickWorker worker) { if (worker == null) throw new ArgumentNullException(nameof(worker)); lock (workList) { workList.Remove(worker); if (workList.Count > 0) curTick = workList.Min(w => w.Interval); else curTick = minTick; } }
private static void AddWorker(TickWorker worker) { lock (tickLock) { workList.Add(worker); worker.Timer.Start(); if (!run) { run = true; tickThread.Start(); } } }
private static void AddWorker(TickWorker worker) { lock (tickLock) { if (!run) { return; } workList.Add(worker); worker.Timer.Start(); } }
public static TickWorker RegisterTick(Action method, TimeSpan interval, bool active) { if (method is null) { throw new ArgumentNullException(nameof(method)); } if (interval < TimeSpan.FromMilliseconds(1)) { throw new ArgumentException("The parameter must be greater than 1ms", nameof(interval)); } var worker = new TickWorker(method, interval) { Active = active }; AddWorker(worker); return(worker); }
public static TickWorker RegisterTickOnce(Action method, TimeSpan?delay = null) { if (method is null) { throw new ArgumentNullException(nameof(method)); } if (delay.HasValue && delay.Value < TimeSpan.Zero) { throw new ArgumentException("The parameter must be greater than 0s", nameof(delay)); } var worker = new TickWorker(method, delay ?? TimeSpan.Zero) { Active = true, TickOnce = true }; AddWorker(worker); return(worker); }
public static TickWorker RegisterTick(Action method, TimeSpan interval, bool active) { if (method == null) { throw new ArgumentNullException(nameof(method)); } if (interval <= TimeSpan.Zero) { throw new ArgumentException("The parameter must be at least '1'", nameof(interval)); } var worker = new TickWorker(method, interval) { Active = active }; AddWorker(worker); return(worker); }
public static TickWorker RegisterTick(Action method, TimeSpan interval, bool active) { if (method == null) throw new ArgumentNullException(nameof(method)); if (interval <= TimeSpan.Zero) throw new ArgumentException("The parameter must be at least '1'", nameof(interval)); var worker = new TickWorker(method, interval); worker.Active = active; lock (workList) { workList.Add(worker); curTick = workList.Min(w => w.Interval); if (!run) { run = true; tickThread.Start(); } } return worker; }
public static void UnregisterTicker(TickWorker worker) { if (worker == null) { throw new ArgumentNullException(nameof(worker)); } lock (workList) { workList.Remove(worker); if (workList.Count > 0) { curTick = workList.Min(w => w.Interval); } else { curTick = minTick; } } }
private static void RemoveUnlocked(TickWorker worker) { workList.Remove(worker); worker.Timer.Stop(); }
// Audioframework /// <summary>Creates a new AudioFramework</summary> /// <param name="afd">Required initialization data from a ConfigFile interpreter.</param> internal AudioFramework(AudioFrameworkData afd, IPlayerConnection audioBackEnd, PlaylistManager playlistMgr) { if (audioBackEnd == null) throw new ArgumentNullException(nameof(audioBackEnd)); if (audioBackEnd.SupportsEndCallback) audioBackEnd.OnSongEnd += (s, e) => OnSongEnd(); else waitEndTick = TickPool.RegisterTick(NotifyEnd, SongEndTimeoutInterval, false); audioFrameworkData = afd; playerConnection = audioBackEnd; playerConnection.Initialize(); PlaylistManager = playlistMgr; }
public WaitEventBlock() { blocker = new AutoResetEvent(false); timeOutTicker = TickPool.RegisterTick(RunTimeout, tickSpan, false); }