【问题标题】:Scheduling an application action in wpf在 wpf 中调度应用程序操作
【发布时间】:2014-08-23 05:55:19
【问题描述】:

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

最好的方法是什么?

最初我考虑使用计时器来做这件事。但这使我的代码变得复杂,因为我必须以用户设置的不同间隔播放多首歌曲。

最近我去了解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

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

谢谢

【问题讨论】:

    标签: c# wpf winforms silverlight scheduled-tasks


    【解决方案1】:

    首先,您需要先以最接近的时间排序您的时间集合。然后,您只需要一个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();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-17
      相关资源
      最近更新 更多