C# 中的闹钟
Alarm Clock in C#
我想用 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 之间)都会打开歌曲的新实例。我只想打开一个实例。
- 如果可能的话,有人可以帮助我如何让程序唤醒计算机。
谢谢你,马克西姆斯
作为一个快速的解决方案,您可以保持布尔状态,无论是否之前触发过警报。
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
的 return 值到 check if the process is still running, or even to kill 它。
此外,如果您使用音乐库来播放您的 mp3,您可能会得到更好的服务。那么你就可以更好地控制它的播放时间了。
一些选项包括:
- WMPLib(对于 Windows,Microsoft Eula)
- NAudio(对于 Windows,Ms-PL)
- DirectShow(针对 Windows,LGPL)
- irrKlang(对于 Windows、Linux 和 Mac,非商业用途免费)
- Alvas.Audio(Windows,付费,私有)
注意:还有通过 OpenTK 或 Monogame 的 OpenAL,但您可能不想要任何 3D 内容。
我想用 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 之间)都会打开歌曲的新实例。我只想打开一个实例。 - 如果可能的话,有人可以帮助我如何让程序唤醒计算机。
谢谢你,马克西姆斯
作为一个快速的解决方案,您可以保持布尔状态,无论是否之前触发过警报。
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
的 return 值到 check if the process is still running, or even to kill 它。
此外,如果您使用音乐库来播放您的 mp3,您可能会得到更好的服务。那么你就可以更好地控制它的播放时间了。
一些选项包括:
- WMPLib(对于 Windows,Microsoft Eula)
- NAudio(对于 Windows,Ms-PL)
- DirectShow(针对 Windows,LGPL)
- irrKlang(对于 Windows、Linux 和 Mac,非商业用途免费)
- Alvas.Audio(Windows,付费,私有)
注意:还有通过 OpenTK 或 Monogame 的 OpenAL,但您可能不想要任何 3D 内容。