コード例 #1
0
        public void TestBackgroundScheduler()
        {
            var scheduler          = new SimpleScheduler();
            var messagingScheduler = new MessagingScheduler(scheduler);

            messagingScheduler.CommandStatusChanged += (sender, args) =>
                                                       Console.WriteLine(args);
            var backgroundScheduler = new BackgroundThreadScheduler(messagingScheduler);
            var thread1             = new Task(() =>
            {
                var guid = Guid.NewGuid();
                foreach (var command in TaskFactory.Parse("Cmd1 Cmd2 Cmd3"))
                {
                    backgroundScheduler.Execute(guid, command);
                }
            });
            var thread2 = new Task(() =>
            {
                var guid = Guid.NewGuid();
                foreach (var command in TaskFactory.Parse("Cmd4 Cmd5 Cmd6"))
                {
                    backgroundScheduler.Execute(guid, command);
                }
            });

            thread1.Start();
            thread2.Start();
            thread1.Wait();
            thread2.Wait();
            Thread.Sleep(10000);
        }
コード例 #2
0
        public void Scheduler_AddTimer_RetrieveTask()
        {
            var scheduler = new SimpleScheduler();

            var task = scheduler.Start(() => 0, 10);

            Assert.IsTrue(task.Active, "Task should be active after Scheduler Insertion...");
        }
コード例 #3
0
        public void Scheduler_StopTimer_TaskInactive()
        {
            var scheduler = new SimpleScheduler();

            var task = scheduler.Start(() => 1, 1);

            task.Stop();

            Assert.IsFalse(task.Active, "Task should be inactive after Scheduler Stop...");
        }
コード例 #4
0
        public void Scheduler_TimerException_LogDisplay()
        {
            var scheduler = new SimpleScheduler();

            var task = scheduler.Start(() => { throw new Exception(); }, 1);

            System.Threading.Thread.Sleep(100);

            Assert.IsFalse(task.Active, "Task should have been scheduled to Test Exception...");
        }
コード例 #5
0
ファイル: WeatherManager.cs プロジェクト: JVirant/DOLSharp
        /// <summary>
        /// Create a new Instance of <see cref="WeatherManager"/>
        /// </summary>
        public WeatherManager(SimpleScheduler Scheduler)
        {
            this.Scheduler = Scheduler;
            RegionsWeather = new Dictionary <ushort, RegionWeather>();
            RegionsTasks   = new Dictionary <ushort, ScheduledTask>();

            GameEventMgr.AddHandler(RegionEvent.RegionStart, OnRegionStart);
            GameEventMgr.AddHandler(RegionEvent.RegionStop, OnRegionStop);
            GameEventMgr.AddHandler(RegionEvent.PlayerEnter, OnPlayerEnter);
        }
コード例 #6
0
        public void TestSimpleScheduler()
        {
            var scheduler = new SimpleScheduler();
            var guid      = Guid.NewGuid();

            foreach (var command in TaskFactory.Parse("Cmd1 Cmd2 Cmd3"))
            {
                scheduler.Execute(guid, command);
            }
        }
コード例 #7
0
        public void Scheduler_IntervalTimerFixedCount_CountRun()
        {
            var scheduler = new SimpleScheduler();

            int count = 0;
            var task  = scheduler.Start(() => { count++; return(count == 10 ? 0 : 1); }, 1);

            System.Threading.Thread.Sleep(200);

            Assert.AreEqual(10, count, "Task Should have been Scheduled 10 times...");
            Assert.IsFalse(task.Active, "Task should be Inactive after Fixed Schedule count...");
        }
コード例 #8
0
        public void Scheduler_StopTimerLatency_TaskRun()
        {
            var scheduler = new SimpleScheduler();

            var run  = false;
            var task = scheduler.Start(() => { run = true; return(0); }, 100);

            System.Threading.Thread.Sleep(150);

            task.Stop();

            Assert.IsTrue(run, "Task should have run when Stopping after delay...");
        }
コード例 #9
0
        public void Scheduler_TimerStartLatency_LowerThan()
        {
            var scheduler = new SimpleScheduler();

            var start    = SimpleScheduler.Ticks;
            var finished = long.MaxValue;
            var task     = scheduler.Start(() => { finished = SimpleScheduler.Ticks; return(0); }, 1);

            System.Threading.Thread.Sleep(100);

            Assert.Less(finished - start, 100, "Scheduler Task Latency is higher than 100ms!");
            Assert.IsFalse(task.Active, "Task Should be inactive after Scheduling...");
        }
コード例 #10
0
        public void Scheduler_StartTimerOnce_TaskRunOnce()
        {
            var scheduler = new SimpleScheduler();

            int count = 0;
            var task  = scheduler.Start(() => { count++; return(0); }, 1);

            System.Threading.Thread.Sleep(100);

            Assert.AreEqual(count, 1, "Task Should have been Scheduled once with no Interval...");

            Assert.IsFalse(task.Active, "Task Should be inactive after one Scheduling...");
        }
コード例 #11
0
        public void Scheduler_StartIntervalTimer_TaskRunMultipleTime()
        {
            var scheduler = new SimpleScheduler();

            int count = 0;
            var task  = scheduler.Start(() => { count++; return(1); }, 1);

            System.Threading.Thread.Sleep(100);

            var intermediate = count;

            Assert.Greater(intermediate, 0, "Task Should have been Scheduled multiple time with an Interval of 1ms...");

            System.Threading.Thread.Sleep(100);
            task.Stop();

            Assert.Greater(count, intermediate, "Task should have been scheduled again before stopping...");
        }
コード例 #12
0
        public void TestMessagingScheduler()
        {
            AbstractScheduler scheduler = new SimpleScheduler();
            var messagingScheduler      = new MessagingScheduler(scheduler);

            messagingScheduler.CommandStatusChanged += (sender, args) => Console.WriteLine(args);
            var guid = Guid.NewGuid();

            foreach (var command in TaskFactory.Parse("Cmd1 Cmd2 Cmd3"))
            {
                messagingScheduler.Execute(guid, command);
            }
            scheduler = messagingScheduler.Remove <MessagingScheduler>();
            foreach (var command in TaskFactory.Parse("Cmd1 Cmd2 Cmd3"))
            {
                scheduler.Execute(guid, command);
            }
        }
コード例 #13
0
        public void Scheduler_MultiInsertStopTest_AllTasksFinished()
        {
            var scheduler = new SimpleScheduler();

            // Long Interval Tasks
            var longTasks = Enumerable.Range(0, 10).Select(i => scheduler.Start(() => 0, 1000)).ToArray();

            System.Threading.Thread.Sleep(100);

            // Short Interval Tasks
            var shortTasks = Enumerable.Range(0, 10).Select(i => scheduler.Start(() => 0, 1)).ToArray();

            System.Threading.Thread.Sleep(100);

            CollectionAssert.AreEqual(Enumerable.Range(0, 10).Select(i => false), shortTasks.Select(t => t.Active));

            System.Threading.Thread.Sleep(900);

            CollectionAssert.AreEqual(Enumerable.Range(0, 10).Select(i => false), longTasks.Select(t => t.Active));
        }
コード例 #14
0
        public void Scheduler_MultiInsertInterval_FixedCountRun()
        {
            var scheduler = new SimpleScheduler();

            // Long Interval Tasks
            var longCount = Enumerable.Range(0, 10).Select(i => 0).ToArray();
            var longTasks = Enumerable.Range(0, 10).Select(i => scheduler.Start(() => { longCount[i]++; return(longCount[i] == 5 ? 0 : 500); }, 500)).ToArray();

            System.Threading.Thread.Sleep(100);

            // Short Interval Tasks
            var shortCount = Enumerable.Range(0, 10).Select(i => 0).ToArray();
            var shortTasks = Enumerable.Range(0, 10).Select(i => scheduler.Start(() => { shortCount[i]++; return(shortCount[i] == 10 ? 0 : 100); }, 1)).ToArray();

            System.Threading.Thread.Sleep(1100);

            CollectionAssert.AreEqual(Enumerable.Range(0, 10).Select(i => 10), shortCount);
            CollectionAssert.AreEqual(Enumerable.Range(0, 10).Select(i => false), shortTasks.Select(t => t.Active));

            System.Threading.Thread.Sleep(1900);

            CollectionAssert.AreEqual(Enumerable.Range(0, 10).Select(i => 5), longCount);
            CollectionAssert.AreEqual(Enumerable.Range(0, 10).Select(i => false), longTasks.Select(t => t.Active));
        }
コード例 #15
0
ファイル: TaskWService.cs プロジェクト: hinteadan/croom
        public TaskWService()
        {
            ServiceName = "TaskService";

            this.schedule = new SimpleScheduler(() => CheckForReservations(), DateTime.Now.AddSeconds(5).ToString("hh:mm:ss"), new TimeSpan(0, 5, 0));
        }
コード例 #16
0
        public void ThrowExceptionWhenNullTracksWerePassed()
        {
            var scheduler = new SimpleScheduler();

            scheduler.Schedule(null, null);
        }