Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 public static void UnregisterTicker(TickWorker worker)
 {
     if (worker == null)
     {
         throw new ArgumentNullException(nameof(worker));
     }
     lock (workList) { RemoveUnlocked(worker); }
 }
Esempio n. 3
0
 public static void UnregisterTicker(TickWorker worker)
 {
     if (worker is null)
     {
         throw new ArgumentNullException(nameof(worker));
     }
     lock (tickLock)
     {
         workList.Remove(worker);
         worker.Timer.Stop();
     }
 }
Esempio n. 4
0
 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;
     }
 }
Esempio n. 5
0
 private static void AddWorker(TickWorker worker)
 {
     lock (tickLock)
     {
         workList.Add(worker);
         worker.Timer.Start();
         if (!run)
         {
             run = true;
             tickThread.Start();
         }
     }
 }
Esempio n. 6
0
        private static void AddWorker(TickWorker worker)
        {
            lock (tickLock)
            {
                if (!run)
                {
                    return;
                }

                workList.Add(worker);
                worker.Timer.Start();
            }
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
 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;
 }
Esempio n. 11
0
 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;
         }
     }
 }
Esempio n. 12
0
 private static void RemoveUnlocked(TickWorker worker)
 {
     workList.Remove(worker);
     worker.Timer.Stop();
 }
Esempio n. 13
0
		// 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;
		}
Esempio n. 14
0
 public WaitEventBlock()
 {
     blocker       = new AutoResetEvent(false);
     timeOutTicker = TickPool.RegisterTick(RunTimeout, tickSpan, false);
 }