public Dev2MonthlyTrigger(ITaskServiceConvertorFactory taskServiceConvertorFactory, MonthlyTrigger instance) : base(taskServiceConvertorFactory, instance) { }
public override string Write() { if (Request == null) { throw new ArgumentNullException("Request"); } int executed = -1; Texaco.Database.IDataCommand db = dbManager.GetDatabase("smsgw"); string scheduleID = GenerateID(); string seqNbr = GetID(); executed = db.Execute("InsertQueueWorkItem", new { SeqNbr = seqNbr, Command = this.Request.QueueWorkItem.Command, ScheduleID = scheduleID == null ? "" : scheduleID, Created = this.Request.QueueWorkItem.Created, Enabled = Convert.ToInt32(this.Request.QueueWorkItem.Enabled) }); if (executed > 0 && !string.IsNullOrEmpty(scheduleID)) { switch (scheduleID.Substring(0, 1)) { case "D": DailyTrigger dailyTrigger = (DailyTrigger)this.Request.QueueWorkItem.Schedule; executed = db.Execute("InsertDailyTrigger", new { ID = scheduleID, RecursEvery = dailyTrigger.RecursEvery }); break; case "W": WeeklyTrigger weeklyTrigger = (WeeklyTrigger)this.Request.QueueWorkItem.Schedule; executed = db.Execute("InsertWeeklyTrigger", new { ID = scheduleID, RecursEvery = weeklyTrigger.RecursEvery, Sunday = Convert.ToInt32(weeklyTrigger.Sunday), Monday = Convert.ToInt32(weeklyTrigger.Monday), Tuesday = Convert.ToInt32(weeklyTrigger.Tuesday), Wednesday = Convert.ToInt32(weeklyTrigger.Wednesday), Thursday = Convert.ToInt32(weeklyTrigger.Thursday), Friday = Convert.ToInt32(weeklyTrigger.Friday), Saturday = Convert.ToInt32(weeklyTrigger.Saturday) }); break; case "M": MonthlyTrigger monthlyTrigger = (MonthlyTrigger)this.Request.QueueWorkItem.Schedule; executed = db.Execute("InsertMonthlyTrigger", new { ID = scheduleID, Days = monthlyTrigger.Days, January = monthlyTrigger.January, February = monthlyTrigger.February, March = monthlyTrigger.March, April = monthlyTrigger.April, May = monthlyTrigger.May, June = monthlyTrigger.June, July = monthlyTrigger.July, August = monthlyTrigger.August, September = monthlyTrigger.September, October = monthlyTrigger.October, November = monthlyTrigger.November, December = monthlyTrigger.December }); break; } } db.Close(); if (executed == 1) { return(seqNbr); } else { return(string.Empty); } }
void SaveTask() { bool isNewTask = true; try { var service = new TaskService(); TaskDefinition td = service.NewTask(); Microsoft.Win32.TaskScheduler.TriggerCollection trgCollection; var oldTriggerDate = new DateTime(); Task task = service.FindTask(MainWindowViewModel.FreeDriverScoutTaskName); if (task != null) { isNewTask = false; oldTriggerDate = task.Definition.Triggers.Count > 0 ? task.Definition.Triggers[0].StartBoundary.Date : DateTime.Today; task.Definition.Triggers.Clear(); trgCollection = task.Definition.Triggers; } else { td.RegistrationInfo.Description = WPFLocalizeExtensionHelpers.GetUIString("WindowsTaskRegistrationInfo"); td.Settings.Enabled = true; td.Actions.Add(new ExecAction(Environment.CurrentDirectory + @"\1Click.exe")); trgCollection = td.Triggers; } TimeSpan selectedTime = TimeSpan.Parse(((ComboBoxItem)AutoScanTime.SelectedValue).Content.ToString()); switch (AutoScanPeriod.SelectedIndex) { case (int)Schedule.Daily: { var dTrigger = new DailyTrigger { DaysInterval = 1 }; if (isNewTask) { dTrigger.StartBoundary = DateTime.Today.Date + selectedTime; } else { dTrigger.StartBoundary = oldTriggerDate + selectedTime; } trgCollection.Add(dTrigger); break; } case (int)Schedule.Weekly: { var wTrigger = new WeeklyTrigger(); switch (AutoScanDay.SelectedIndex) { case (int)DayOfWeek.Monday: { wTrigger.DaysOfWeek = DaysOfTheWeek.Monday; break; } case (int)DayOfWeek.Tuesday: { wTrigger.DaysOfWeek = DaysOfTheWeek.Tuesday; break; } case (int)DayOfWeek.Wednesday: { wTrigger.DaysOfWeek = DaysOfTheWeek.Wednesday; break; } case (int)DayOfWeek.Thursday: { wTrigger.DaysOfWeek = DaysOfTheWeek.Thursday; break; } case (int)DayOfWeek.Friday: { wTrigger.DaysOfWeek = DaysOfTheWeek.Friday; break; } case (int)DayOfWeek.Saturday: { wTrigger.DaysOfWeek = DaysOfTheWeek.Saturday; break; } case (int)DayOfWeek.Sunday: { wTrigger.DaysOfWeek = DaysOfTheWeek.Sunday; break; } } trgCollection.Add(wTrigger); foreach (WeeklyTrigger trg in trgCollection) { if (isNewTask) { trg.StartBoundary = DateTime.Today.Date + selectedTime; } else { trg.StartBoundary = oldTriggerDate + selectedTime; } trg.WeeksInterval = 1; } break; } case (int)Schedule.Monthly: { var mTrigger = new MonthlyTrigger(); if (isNewTask) { mTrigger.StartBoundary = DateTime.Today.Date + selectedTime; } else { mTrigger.StartBoundary = oldTriggerDate + selectedTime; } mTrigger.MonthsOfYear = MonthsOfTheYear.AllMonths; mTrigger.DaysOfMonth = new int[] { Int16.Parse(((ComboBoxItem)AutoScanDate.SelectedValue).Content.ToString()) }; trgCollection.Add(mTrigger); break; } } // Register the task in the root folder if (isNewTask) { service.RootFolder.RegisterTaskDefinition(MainWindowViewModel.FreeDriverScoutTaskName, td); } else { task.RegisterChanges(); } TaskManager.UpdateTaskStatus(MainWindowViewModel.FreeDriverScoutTaskName, AutoScan.IsChecked == true); } catch { } }
public static bool CreateScheduleTask(string taskName, string description, bool runAtStartup, string executionPeriod) { bool result = false; try { using (TaskService ts = new TaskService()) { // Create a new task definition for the local machine and assign properties TaskDefinition td = TaskService.Instance.NewTask(); td.RegistrationInfo.Description = description; td.Settings.DisallowStartIfOnBatteries = false; td.Settings.StopIfGoingOnBatteries = false; td.Settings.RunOnlyIfNetworkAvailable = true; td.Settings.MultipleInstances = TaskInstancesPolicy.StopExisting; // Create a trigger that fires when log in if (runAtStartup) { LogonTrigger lt = new LogonTrigger(); td.Triggers.Add(lt); //Creating boot trigger that fires 2 minutes after the system starts. //---NO LONGER NECESSARY /*BootTrigger bt = new BootTrigger(); * bt.Delay = TimeSpan.FromMinutes(2); * td.Triggers.Add(bt);*/ } switch (executionPeriod) { default: case "Every Day": // Create a trigger that runs every day at 9:05. DailyTrigger dt = new DailyTrigger(); dt.StartBoundary = DateTime.Today + TimeSpan.FromHours(9) + TimeSpan.FromMinutes(5); dt.DaysInterval = 1; td.Triggers.Add(dt); break; case "Every Week": WeeklyTrigger wt = new WeeklyTrigger(); wt.StartBoundary = DateTime.Today + TimeSpan.FromHours(9) + TimeSpan.FromMinutes(5); wt.DaysOfWeek = DaysOfTheWeek.Monday; wt.WeeksInterval = 1; td.Triggers.Add(wt); break; case "Every Month": MonthlyTrigger mt = new MonthlyTrigger(); mt.StartBoundary = DateTime.Today + TimeSpan.FromHours(9) + TimeSpan.FromMinutes(5); mt.RunOnLastDayOfMonth = true; mt.MonthsOfYear = MonthsOfTheYear.AllMonths; td.Triggers.Add(mt); break; case "Every 3 Months": MonthlyTrigger mt2 = new MonthlyTrigger(); mt2.StartBoundary = DateTime.Today + TimeSpan.FromHours(9) + TimeSpan.FromMinutes(5); mt2.RunOnLastDayOfMonth = true; mt2.MonthsOfYear = MonthsOfTheYear.January | MonthsOfTheYear.March | MonthsOfTheYear.May | MonthsOfTheYear.July | MonthsOfTheYear.September | MonthsOfTheYear.November; td.Triggers.Add(mt2); break; case "Never More": ts.RootFolder.DeleteTask(taskName, false); result = true; return(result); } //string programFiles = Environment.ExpandEnvironmentVariables("%ProgramW6432%"); string workingDirectory = string.Format(@"{0}\{1}", Environment.ExpandEnvironmentVariables("%ProgramFiles(x86)%"), "Bing Wallpaper"); string programUri = string.Format(@"{0}\{1}", workingDirectory, "BingWallpaper.exe"); // Create an action that will launch Notepad whenever the trigger fires td.Actions.Add(programUri, null, workingDirectory); // Register the task in the root folder of the local machine ts.RootFolder.RegisterTaskDefinition(taskName, td); result = true; } } catch { } return(result); }
} // GetDuration private void SetSchedule(TaskDefinition definition, RecordSchedule recordSchedule) { switch (recordSchedule.Kind) { case RecordScheduleKind.RightNow: { var rightNow = new TimeTrigger(); rightNow.EndBoundary = DateTime.Now.TruncateToSeconds() + TotalRecordTime + new TimeSpan(0, 1, 0); definition.Triggers.Add(rightNow); break; } // case RecordScheduleKind.RightNow case RecordScheduleKind.OneTime: { var oneTime = new TimeTrigger(); var schedule = (RecordOneTime)recordSchedule; oneTime.StartBoundary = schedule.StartDate - StartSafetyMargin; oneTime.EndBoundary = schedule.StartDate + TotalRecordTime; definition.Triggers.Add(oneTime); break; } // case RecordScheduleKind.OneTime case RecordScheduleKind.Daily: { var daily = new DailyTrigger(); var schedule = (RecordDaily)recordSchedule; daily.StartBoundary = schedule.StartDate - StartSafetyMargin; if (schedule.ExpiryDate.HasValue) { daily.EndBoundary = schedule.ExpiryDate.Value; } // if daily.DaysInterval = schedule.RecurEveryDays; definition.Triggers.Add(daily); break; } // case RecordScheduleKind.Daily case RecordScheduleKind.Weekly: { var weekly = new WeeklyTrigger(); var schedule = (RecordWeekly)recordSchedule; weekly.StartBoundary = schedule.StartDate - StartSafetyMargin; if (schedule.ExpiryDate.HasValue) { weekly.EndBoundary = schedule.ExpiryDate.Value; } // if weekly.WeeksInterval = schedule.RecurEveryWeeks; weekly.DaysOfWeek = GetDaysOfTheWeek(schedule.WeekDays); definition.Triggers.Add(weekly); break; } // case RecordScheduleKind.Weekly case RecordScheduleKind.Monthly: { var monthly = new MonthlyTrigger(); var schedule = (RecordMonthly)recordSchedule; monthly.StartBoundary = schedule.StartDate - StartSafetyMargin; if (schedule.ExpiryDate.HasValue) { monthly.EndBoundary = schedule.ExpiryDate.Value; } // if throw new NotImplementedException(); } // case RecordScheduleKind.Monthly default: throw new IndexOutOfRangeException(); } // switch } // SetSchedule