Quantcast
Channel: Task Scheduler Managed Wrapper
Viewing all articles
Browse latest Browse all 2206

New Post: TriggerCollection.Add() adds the Trigger but sets the StartBoundary to Current DateTime.

$
0
0
TriggerCollection.Add(Trigger t) adds the Trigger but sets the StartBoundary to Current DateTime instead of using the StartBoundary of t.

The issue is reproduced while trying to Add the Trigger fetched from the Task.

Below is the code used to reproduce it.
static void Main(string[] args)
        {
            DateTime dt = new DateTime(1992, 06, 19, 00, 00, 00);
            TaskService ts = new TaskService();

            // Delete the task only for Demo exe.
            if(ts.FindTask("New Task") != null)
                ts.RootFolder.DeleteTask("New Task");
            //Below comments mentions the scenario of the User which I have tried to replicate in this demo exe.
            //USer creates a new Task with some action and sets 1 trigger.
            TaskDefinition td = ts.NewTask();
            Trigger t1 = new TimeTrigger(dt);
            td.Triggers.Add(t1);// Time Trigger
            td.Actions.Add(@"C:\WINDOWS\system32\notepad.exe");
            ts.RootFolder.RegisterTaskDefinition("New Task", td, TaskCreation.Create, @"UserName", "Password", TaskLogonType.Password);
            Console.WriteLine("Time TRigger saved");
            ts = null;

            //Now user feels to add 1 more trigger to the Task or also edit the existing Trigger.
            TaskService ts1 = new TaskService();
            Task Curr_task = ts1.FindTask("New Task");

            
            if (Curr_task != null)
            {
                Trigger t1_new = Curr_task.Definition.Triggers[0];
                //USer's new Trigger
                Trigger t2 = new MonthlyTrigger { StartBoundary = dt, DaysOfMonth = new[] { 1 } };

                //Clear triggerList..
                Curr_task.Definition.Triggers.Clear();

                //Add trigger t1_new and also add trigger t2 to TriggerCollection.
                //Now the trigger below for the sake of simplification has been added manually.
                //Add Trigger 1
                Curr_task.Definition.Triggers.Add(t1_new);// Here StartBoundary changes to the DateTime.Now
                Console.WriteLine(Curr_task.Definition.Triggers[0].ToString());
                //Add Trigger 2
                Curr_task.Definition.Triggers.Add(t2);// Time Trigger
                Console.WriteLine(Curr_task.Definition.Triggers[1].ToString());
            }
            Console.ReadKey();
        }
////////////////////////////////////////////
OUTPUT
---------------------------
Time TRigger saved
At 3:38 PM on 5/2/2017
At 12:00 AM on day 1 of every month, starting 6/19/1992.
I want to add the old trigger defined by the user to the Task again. But always it sets the StartBoundary to Current datetime of the system.

Please correct me if something is wrong here.

Viewing all articles
Browse latest Browse all 2206

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>