public static void CancelTask(ScheduledTask task) { if (task.TaskCancellationTokenSource != null) { task.TaskCancellationTokenSource.Cancel(); } }
public static void CreateTask(ScheduledTask task) { if (task.IsEnabled) { task.TaskCancellationTokenSource = new CancellationTokenSource(); task.ActualTask = Repeat.Interval(TimeSpan.FromSeconds(task.RepeatInterval), new Action(async () => { await App.Current.Dispatcher.BeginInvoke(new Action(async () => { if (App.ArkRcon.IsConnected) { foreach (TaskCommand command in task.TaskCommands) { switch (command.CommandType) { case CommandType.Delay: bool result; int output; result = int.TryParse(command.Variable, out output); await Task.Delay(output * 1000); break; case CommandType.ListPlayers: App.ArkRcon.ExecuteScheduledTask(task.TaskName, "listplayers"); break; case CommandType.Broadcast: App.ArkRcon.ExecuteScheduledTask(task.TaskName, string.Format("broadcast {0}", command.Variable)); break; case CommandType.Shutdown: App.ArkRcon.ExecuteScheduledTask(task.TaskName, "DoExit"); break; case CommandType.SaveWorld: App.ArkRcon.ExecuteScheduledTask(task.TaskName, "SaveWorld"); break; case CommandType.Custom: App.ArkRcon.ExecuteScheduledTask(task.TaskName, command.Variable); break; default: break; } } } })); }), task.TaskCancellationTokenSource.Token, task.IsRepeat); } }
public MainViewModel() { GeneralSettings = App.ModelManager.Get<UserSettings>().GeneralSettings; #region Scheduler Related TaskList = new ObservableCollection<TaskCommand>(); CommandTypeList = GetCMEnum(); NewScheduledTask = new ScheduledTask(); AddTaskCommandWindowVis = false; AddTaskWindowVis = false; ConfirmAddNewTaskCommand = new RelayCommand(ConfirmAddNewTask); CancelAddNewTaskCommand = new RelayCommand(CancelAddNewTask); DoAddTaskCommand = new RelayCommand(DoAddTask); DontAddTaskCommand = new RelayCommand(DontAddTask); ShowAboutCommand = new RelayCommand(ShowAbout); AddTaskCommand = new RelayCommand(AddTask); DelTaskCommandCommand = new RelayCommand(DelTaskCommand); #endregion Messenger.Default.Register<NotificationMessage>(this, OnNotificationMessage); }
private void CancelAddNewTask() { NewScheduledTask = new ScheduledTask(); TaskList.Clear(); RaisePropertyChanged("NewScheduledTask"); AddTaskWindowVis = false; }