Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在wpf中计划应用程序操作_C#_Wpf_Winforms_Silverlight_Scheduled Tasks - Fatal编程技术网

C# 在wpf中计划应用程序操作

C# 在wpf中计划应用程序操作,c#,wpf,winforms,silverlight,scheduled-tasks,C#,Wpf,Winforms,Silverlight,Scheduled Tasks,我正在尝试创建一个WPF媒体应用程序,用于使用媒体元素运行音频文件。 我成功了。但我想安排播放一首我在某段时间内反复选择的歌曲。说每天10点或每小时等 最好的方法是什么 起初我想用定时器来做。但这让我的代码变得复杂,因为我必须以用户设置的不同间隔播放多首歌曲 最近我去了解了他们,并运行了他们的示例代码[打开记事本],它运行得非常好 using (TaskService ts = new TaskService()) { // Create a new task definiti

我正在尝试创建一个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");
  }
如何定义在此上下文中播放歌曲的动作?目前他们提供ExeAction、SendEmail、ShowMessage和ComHandleration

或者我们可以通过这个任务调度器调用我的应用程序的play方法吗?请帮我提供一些想法


谢谢

首先,您需要先订购最接近时间的时间集。然后,您只需要一个
Dispatcher
,您可以将其
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();
}