c# – 在wpf中调度应用程序操作

我正在尝试使用Media Element创建一个WPF媒体应用程序来运行音频文件.
我成功了.但我想安排播放我在一段时间内反复选择的歌曲.每天或每小时等10’钟.

最好的方法是什么?

最初我想考虑使用Timer来做它.但这使我的代码变得复杂,因为我必须以用户设置的不同间隔播放多首歌曲.

最近我去了解Task Scheduler,我运行他们的示例代码[打开记事本],它完美无缺.

  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 see this link

或者我们可以通过此任务计划程序调用我的应用程序的播放方法吗?请提供任何想法,帮助我.

谢谢

解决方法:

首先,您需要先按最接近的时间订购您的收集时间.然后,您只需要一个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();
}

相关文章

如何在Silverlight4(XAML)中绑定IsEnabled属性?我试过简单的...
我正在编写我的第一个vb.net应用程序(但我也会在这里标记c#,...
ProcessFile()是在UIThread上运行还是在单独的线程上运行.如...
我从同行那里听说,对sharepoint的了解对职业生涯有益.我们不...
我正在尝试保存一个类我的类对象的集合.我收到一个错误说明:...
我需要根据Silverlight中的某些配置值设置给定控件的Style.我...