在wpf中调度应用程序操作

本文关键字:应用程序 操作 调度 wpf | 更新日期: 2023-09-27 18:11:04

我正在尝试创建一个使用media Element运行音频文件的WPF媒体应用程序。我成功了。但我想安排播放的歌曲,我选择在一定的时间间隔反复。每天10点或每小时等。

最好的方法是什么?

最初我想做它使用定时器。但是,这使我的代码复杂,因为我必须播放多首歌曲在不同的间隔由用户设置。

最近我去了解任务调度和我运行他们的示例代码[打开记事本],它工作得很好。

  using (TaskService ts = new TaskService())
  {
     // Create a new task definition and assign properties
     TaskDefinition td = ts.NewTask();
     td.RegistrationInfo.Description = "Does something";
     // Create a trigger that will fire the task at this time every other day
     td.Triggers.Add(new DailyTrigger { DaysInterval = 2 });
     // Create an action that will launch Notepad whenever the trigger fires
     td.Actions.Add(new ExecAction("notepad.exe", "c:''test.log", null));
     // Register the task in the root folder
     ts.RootFolder.RegisterTaskDefinition(@"Test", td);
     // Remove the task we just created
     ts.RootFolder.DeleteTask("Test");
  }

我如何定义在这个上下文中播放歌曲的动作?目前他们提供了ExecAction,SendEmail,ShowMessage和ComHandlerAction,请参阅此链接

或者我们可以通过任务调度程序调用我的应用程序的play方法吗?请给我提供任何建议。

谢谢

在wpf中调度应用程序操作

首先,您需要以最接近的时间对时间集合进行排序。然后,您只需要一个DispatcherTimer,您可以将其Interval值设置为从现在到您的集合的第一次之间的时间长度:

private DispatcherTimer mediaPlayerTimer = null;

mediaPlayerTimer = new DispatcherTimer();
mediaPlayerTimer.Interval = YourFirstDateTime.Subtract(DateTime.Now);
mediaPlayerTimer.Tick += MediaPlayerTimer_Tick;
mediaPlayerTimer.Start();

private void MediaPlayerTimer_Tick(object sender, EventArgs e)
{
    mediaPlayerTimer.Stop();
    // Load next audio file and play
    // Remove YourFirstDateTime from your collection
    // Set YourFirstDateTime = the next item from the collection
    mediaPlayerTimer.Interval = YourFirstDateTime.Subtract(DateTime.Now);
    mediaPlayerTimer.Start();
}