c#中的闹钟
本文关键字:闹钟 | 更新日期: 2023-09-27 18:11:46
我有一个想法,用c#构建一个闹钟,具有以下特性
- 显示当天的待办事项列表
- 从选定的歌曲列表中播放歌曲
已经完成的功能
- 显示待办事项列表
- 播放歌曲
显示时间间隔
private void Form1_Load(object sender, EventArgs e) { Timer MyTimer = new Timer(); MyTimer.Interval = (1 * 60 * 1000); // 1 mins MyTimer.Tick += new EventHandler(MyTimer_Tick); MyTimer.Start(); } private void MyTimer_Tick(object sender, EventArgs e) { WakeUpProcess(); } private void WakeUpProcess() { StreamReader CurrentAgenda = new StreamReader("C:/Users/Max/documents/visual studio 2015/Projects/Advanced_AlarmClock/Advanced_AlarmClock/File Resources/Todays Agenda.txt"); TimeSpan start = new TimeSpan(06, 50, 0); //10 o'clock TimeSpan end = new TimeSpan(07, 00, 0); //12 o'clock TimeSpan now = DateTime.Now.TimeOfDay; System.IO.StreamReader CurrentAgendaRaw = new System.IO.StreamReader("C:/Users/Max/documents/visual studio 2015/Projects/Advanced_AlarmClock/Advanced_AlarmClock/File Resources/Todays Agenda.txt"); string CurrentAgendaTxt = CurrentAgendaRaw.ReadToEnd(); if ((now > start) && (now < end)) { this.WindowState = FormWindowState.Normal; Output.Text = ("Good Morning Max" + Environment.NewLine + CurrentAgendaTxt); Process.Start("C:/Users/Max/Downloads/Juice Newton - Angel Of The Morning.mp3"); } }
然而,我需要一些解决我面临的问题的方法。-每次达到时间要求(在6:50到7:00之间),都会打开一个新的歌曲实例。我只需要打开一个实例。-如果可能的话,谁能帮我弄一下如何让程序唤醒电脑?
谢谢,Maximus
作为一种快速的解决方案,如果警报之前是否被触发过,您可以保持bool状态。
bool alarmTriggered = false;
private void WakeUpProcess()
{
StreamReader CurrentAgenda = new StreamReader("C:/Users/Max/documents/visual studio 2015/Projects/Advanced_AlarmClock/Advanced_AlarmClock/File Resources/Todays Agenda.txt");
TimeSpan start = new TimeSpan(06, 50, 0); //10 o'clock
TimeSpan end = new TimeSpan(07, 00, 0); //12 o'clock
TimeSpan now = DateTime.Now.TimeOfDay;
System.IO.StreamReader CurrentAgendaRaw = new System.IO.StreamReader("C:/Users/Max/documents/visual studio 2015/Projects/Advanced_AlarmClock/Advanced_AlarmClock/File Resources/Todays Agenda.txt");
string CurrentAgendaTxt = CurrentAgendaRaw.ReadToEnd();
if ((now > start) && (now < end) && !alarmTriggered)
{
alarmTriggered = true;
this.WindowState = FormWindowState.Normal;
Output.Text = ("Good Morning Max" + Environment.NewLine + CurrentAgendaTxt);
Process.Start("C:/Users/Max/Downloads/Juice Newton - Angel Of The Morning.mp3");
}
}
else {
alarmTriggered = false;
}
}
PS:如果你想继续你的应用程序,评论中提出的库是一个更好的方法。
PS2:我假设你只是在尝试周围的东西,这个应用程序应该运行多天,否则删除事件监听器是迄今为止最好的选择。
您正在使用Process.Start
播放歌曲,并将其留在那里。
您可以尝试使用Process.Start
的返回值来检查进程是否仍在运行,甚至杀死它。
此外,如果你使用库来播放mp3,你可能会得到更好的服务。这样你就可以更好地控制它的播放时间。
选项包括:
- WMPLib (for Windows, Microsoft Eula)
- NAudio (for Windows, Ms-PL)
- DirectShow (for Windows, LGPL)
- irrKlang(适用于Windows, Linux和Mac,免费用于非商业用途)
- 阿尔瓦。音频(用于Windows,付费,不可用)
注意:也有OpenAL通过OpenTK或Monogame,但你可能不需要任何3D的东西。