C#中的闹钟

时间:2016-10-05 19:30:16

标签: c# clock alarm

我有一个想法是在c#中使用以下功能构建闹钟

  1. 显示当天的待办事项列表
  2. 从所选歌曲列表中播放歌曲
  3. 我已经完成的已完成功能

    1. 显示待办事项列表
    2. 播放一首歌
    3. 在特定时间之间显示表单

      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");
      
          }
      
      }
      
    4. 但是,我需要一些解决方案来解决我面临的问题。   - 每次满足时间要求(在6:50和7:00之间),都会打开一首新的实例。我只想打开一个实例。   - 如果可能的话,也有人会告诉我如何让程序唤醒计算机。

      谢谢你,Maximus

2 个答案:

答案 0 :(得分:0)

作为一种快速解决方案,如果之前已触发警报,您​​可以保持警惕。

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:我假设你只是在尝试各种各样的东西,这个应用程序应该运行多天,否则删除事件监听器是目前为止的最佳选择。

答案 1 :(得分:0)

您正在使用Process.Start播放该歌曲并将其留在那里。

您可以尝试使用Process.Startcheck if the process is still running的返回值,甚至是kill的返回值。

此外,如果你使用一个库播放你的mp3,你可能会更好。那么你就可以更好地控制它的上场时间。

一些选项包括:

  • WMPLib(适用于Windows,Microsoft Eula)
  • NAudio(适用于Windows,Ms-PL)
  • DirectShow(适用于Windows,LGPL)
  • irrKlang(适用于Windows,Linux和Mac,免费用于非商业用途)
  • Alvas.Audio(适用于Windows,付费,私密)

注意:通过OpenTK或Monogame也有OpenAL,但你可能不会看到任何3D内容。