gpt4 book ai didi

c# - 在 wpf 中安排应用程序操作

转载 作者:太空狗 更新时间:2023-10-30 00:51:53 24 4
gpt4 key购买 nike

我正在尝试创建一个 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");
}

如何定义在此上下文中播放歌曲的 Action ?目前他们提供 ExecAction、SendEmail、ShowMessage 和 ComHandlerAction see this link

或者我们可以通过这个 Task Scheduler 调用我的应用程序的 play 方法吗?请提供任何想法帮助我。

谢谢

最佳答案

首先,您需要将时间集合排在最前面。然后,您只需要一个 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();
}

关于c# - 在 wpf 中安排应用程序操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24531159/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com