Пример #1
0
        public void SchedulerSerializationTest()
        {
            Scheduler scheduler = new Scheduler();
            AppTask   task1     = new AppTask();
            AppTask   task2     = new AppTask();

            task1.TaskName      = "Task1";
            task1.TaskNotes     = "Task One!";
            task1.Frequency     = 2;
            task1.FrequencyUnit = "Days";
            task1.Done          = false;
            task1.ReminderEnd   = System.DateTime.Now;
            scheduler.AddTask(task1);

            task2.TaskName      = "Task2";
            task2.TaskNotes     = "Task Two.";
            task2.Frequency     = 4;
            task2.FrequencyUnit = "Months";
            task2.Done          = true;
            task2.ReminderEnd   = System.DateTime.Now;
            scheduler.AddTask(task2);

            Assert.AreEqual(2, scheduler.TaskCount);

            scheduler.Write("Test.xml");

            Scheduler schedulerToCompare = new Scheduler("Test.xml");

            Assert.AreEqual(2, schedulerToCompare.TaskCount);
            Assert.AreEqual(1, scheduler.GetTasks(false).Count);
            Assert.AreEqual(scheduler.TaskAt(0).TaskName, "Task1");
            Assert.AreEqual(scheduler.TaskAt(1).TaskName, "Task2");
        }
Пример #2
0
        static void Main(string[] args)
        {
            var fsql = new FreeSql.FreeSqlBuilder()
                       .UseConnectionString(FreeSql.DataType.Sqlite, "data source=task.db;max pool size=5")
                       .UseAutoSyncStructure(true)
                       .UseNoneCommandParameter(true)
                       .UseMonitorCommand(cmd => Console.WriteLine($"=========sql: {cmd.CommandText}\r\n"))
                       .Build();

            Scheduler scheduler = new Scheduler(new MyTaskHandler(fsql));

            var dt = DateTime.Now;

            for (var a = 0; a < 2; a++)
            {
                //临时任务
                scheduler.AddTempTask(TimeSpan.FromSeconds(20), () =>
                {
                    Console.WriteLine($"[{DateTime.Now.ToString("HH:mm:ss.fff")}] 20秒后被执行,还剩 {scheduler.QuantityTempTask} 个临时任务");
                });

                //循环任务,执行10次,每次间隔10秒
                scheduler.AddTask(topic: "test001", body: "data1", round: 10, seconds: 10);
            }
            var dtts = DateTime.Now.Subtract(dt).TotalMilliseconds;

            Console.WriteLine($"[{DateTime.Now.ToString("HH:mm:ss.fff")}] 注册耗时 {dtts}ms,共计 {scheduler.QuantityTempTask} 个临时任务,{scheduler.QuantityTask} 个循环任务");

            Console.ReadKey();

            dtts = DateTime.Now.Subtract(dt).TotalMilliseconds;
            Console.WriteLine($"[{DateTime.Now.ToString("HH:mm:ss.fff")}] 耗时 {dtts}ms,还剩 {scheduler.QuantityTempTask} 个任务,{scheduler.QuantityTask} 个循环任务");
            scheduler.Dispose();
            fsql.Dispose();
        }
Пример #3
0
    void Start()
    {
        memories = new List <Memory>();
        agent    = GetComponent <NavMeshAgent>();

        wants = new Dictionary <WantType, int> ();
        for (int i = 0; i < (int)WantType.SIZE; i++)
        {
            wants.Add((WantType)i, Random.Range(30, 70));
        }

        affectedBy = new List <Effect>();

        firstName = NameBank.RandomName();
        do
        {
            lastName = NameBank.RandomName();
        } while(firstName == lastName);

        Scheduler.AddTask(Look, true);
        Scheduler.AddTask(Smell, true);
        Scheduler.AddTask(Hear, true);
        Scheduler.AddTask(Touch, true);
        Scheduler.AddTask(UpdateItemStats, true);
        Scheduler.AddTask(NextTask, true);
        Scheduler.AddTask(UpdateText, true);
        Scheduler.AddTask(UpdateMemories, true);
    }
Пример #4
0
        bool Proxy_ReceivedContainerOpenIncomingPacket(IncomingPacket packet)
        {
            if (_autoLoot && _lootItems.Count > 0)
            {
                ContainerOpenPacket p = (ContainerOpenPacket)packet;

                bool lootContainer = isLootContainer(p.Id);

                if (lootContainer && !Tibia.Constants.ItemLists.Container.ContainsKey(p.ItemId))
                {
                    Scheduler.AddTask(new Action(autoLoot), null, 200);
                }
                else if (!lootContainer)
                {
                    p.Name = "Container " + (p.Id + 1);

                    if (_autoLootWait == AutoLootWait_t.OPEN_NEW_LOOT_CONTAINER)
                    {
                        _autoLootWait = AutoLootWait_t.STOP;
                        Scheduler.AddTask(new Action(autoLoot), null, 100);
                    }
                }
            }

            return(true);
        }
Пример #5
0
        public void Run_scheduler()
        {
            var sut = new Scheduler(new TimeSpan(0, 0, 0, 1));

            sut.AddTask(() => Console.WriteLine($"Hello from the scheduler at {DateTime.Now}"));
            sut.Start();

            Thread.Sleep(10 * 1000);
        }
Пример #6
0
        private void Set(string input)
        {
            Regex r = new Regex(@"\d?\d(:|\s)?\d?\d?", RegexOptions.Compiled);
            Match m = r.Match(input);

            if (m.Groups.Count > 0)
            {
                Scheduler s = new Scheduler();
                s.AddTask("Good morning", "alarm|on", m.Groups[0].Value.Replace(" ", ":"), false);
                speech.Speak("Setting an alarm for " + m.Groups[0].Value);
            }
        }
Пример #7
0
        protected void Application_Start()
        {
            GlobalConfiguration.Configure(WebApiConfig.Register);

            int syncTime;

            if (!Int32.TryParse(ConfigurationManager.AppSettings["SyncTimeInSeconds"], out syncTime))
            {
                syncTime = defaultSyncTime;
            }
            Scheduler.AddTask("sync", syncTime);
        }
Пример #8
0
        private void InstallLoad(bool isInstalled)
        {
            string ExeName = Assembly.GetExecutingAssembly().Location;

            if (isInstalled)
            {
                Scheduler.AddTask("Kill Windows Update", ExeName, TaskRunLevel.Highest);
            }
            else
            {
                Scheduler.RemoveTask(ExeName, out bool IsFound);
            }
        }
Пример #9
0
        private void InstallLoad(bool isInstalled, string appName)
        {
            string ExeName = Assembly.GetExecutingAssembly().Location;

            // Create or delete a task in the Task Scheduler.
            if (isInstalled)
            {
                TaskRunLevel RunLevel = PluginManager.RequireElevated ? TaskRunLevel.Highest : TaskRunLevel.LUA;
                Scheduler.AddTask(appName, ExeName, RunLevel, Logger);
            }
            else
            {
                Scheduler.RemoveTask(ExeName, out bool IsFound); // Ignore it if the task was not found.
            }
        }
Пример #10
0
        public ActionResult Create(TaskDescriptor task, FormCollection forms)
        {
            var recurringDaysOfMonth = forms["RecurringDaysOfMonth"];
            var recurringDaysOfWeek  = forms["RecurringDaysOfWeek"];
            var recurringMonths      = forms["RecurringMonths"];
            var jobType = forms["JobType"];

            if (task.Frequency == Frequencies.Weekly)
            {
                if (recurringDaysOfWeek != null && recurringDaysOfWeek.Length > 0)
                {
                    task.RecurringDaysOfWeek = recurringDaysOfWeek.Split(',').Select(a => Convert.ToInt32(a)).ToArray();
                }
            }

            if (task.Frequency == Frequencies.Monthly)
            {
                if (recurringDaysOfMonth != null && recurringDaysOfMonth.Length > 0)
                {
                    task.RecurringDaysOfMonth = recurringDaysOfMonth.Split(',').Select(a => Convert.ToInt32(a)).ToArray();
                }

                if (recurringMonths != null && recurringMonths.Length > 0)
                {
                    task.RecurringMonths = recurringMonths.Split(',').Select(a => Convert.ToInt32(a)).ToArray();
                }
            }

            if (!string.IsNullOrEmpty(jobType))
            {
                task.JobType = Type.GetType(jobType);
                var props = task.JobType.GetProperties();
                task.CommandData = new System.Collections.Generic.Dictionary <string, object>();

                foreach (var pro in props)
                {
                    var key = task.JobType.Name + "." + pro.Name;
                    if (forms[key] != null)
                    {
                        task.CommandData.Add(pro.Name, Convert.ChangeType(forms[key], pro.PropertyType));
                    }
                }
            }

            task.Name = DNA.Utility.TextUtility.Slug(task.JobType.FullName + "." + System.IO.Path.GetRandomFileName().Replace(".", ""));
            Scheduler.AddTask(task);
            return(PartialView());
        }
Пример #11
0
 private void DoAutoWalk()
 {
     if (walkDirections.Count > 0)
     {
         if (Player.LastStepTime + Player.GetStepDuration() < DateTime.Now.Ticks)
         {
             Direction direction = walkDirections.Dequeue();
             Game.CreatureWalk(Player, direction);
         }
         if (walkDirections.Count > 0)
         {
             Scheduler.AddTask(
                 this.DoAutoWalk,
                 null,
                 (int)Player.GetStepDuration());
         }
     }
 }
Пример #12
0
        static void Main(string[] args)
        {
            System.AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionTrapper;

            var logRepository = LogManager.GetRepository(System.Reflection.Assembly.GetEntryAssembly());

            XmlConfigurator.Configure(logRepository, new FileInfo("log4net.config"));

            CsvReader reader = new CsvReader("adverts.csv");

            while (reader.hasMoreRows())
            {
                var row = reader.getNextRow();
                scheduler.AddTask(Advert.fromProperties(row));
            }

            Console.WriteLine("Press enter to exit...");
            Console.ReadLine();

            scheduler.RemoveAllTasks();
        }
Пример #13
0
        public static void Main(string[] args)
        {
            var mrCarson = new MrCarson();

            if (mrCarson.AuthenticationRequired())
            {
                mrCarson.Authenticate();
            }
            if (mrCarson.ContentImportRequired())
            {
                mrCarson.ImportContent();
            }

            var at_1150 = new DateTime();
            var at_1530 = new DateTime();

            var scheduler = new Scheduler();

            scheduler.AddTask(() => {
                var currentTime = DateTime.Now;
                if (currentTime.TimeOfDay > new TimeSpan(11, 37, 0) && at_1150.Date < currentTime.Date)
                {
                    at_1150 = currentTime;
                    Console.WriteLine("11:37 - Time for a tweet!");
                    mrCarson.Tweet();
                }
                if (currentTime.TimeOfDay > new TimeSpan(15, 30, 0) && at_1530.Date < currentTime.Date)
                {
                    at_1530 = currentTime;
                    Console.WriteLine("15:30 - Time for a tweet!");
                    mrCarson.Tweet();
                }
            });

            scheduler.Start();

            Console.WriteLine("Press any key to stop...");
            Console.ReadLine();
        }
Пример #14
0
    void NextTask()
    {
        WantType highestWant = (WantType)0;

        for (int i = 1; i < (int)WantType.SIZE; i++)
        {
            if (wants[(WantType)i] > wants[highestWant])
            {
                highestWant = (WantType)i;
            }
        }
        if (highestWant != currentTask)
        {
            currentTask = highestWant;
            switch (highestWant)
            {
            case WantType.Hunger:
                Scheduler.AddTask(FindFood, false);
                break;

            case WantType.Safety:
                Scheduler.AddTask(FindSafety, false);
                break;

            case WantType.Sleep:
                Scheduler.AddTask(FindRest, false);
                break;

            case WantType.Socialization:
                Scheduler.AddTask(FindSocialization, false);
                break;

            default:
                break;
            }
        }
    }
Пример #15
0
 public override void AddTask(SyncEntity Entity)
 {
     scheduler.AddTask(Entity);
 }
Пример #16
0
 public override void RegisterDefaultSchedulers()
 {
     Scheduler.AddTask(new AnnouncementTask(scheduler), 1, true);
     base.RegisterDefaultSchedulers();
 }