Example #1
0
 private void RingBeingready(object threadNum)
 {
     //开始响铃
     RingClockSet.Beep(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, string.Format("wav\\第{0}测试.wav", ((int)threadNum) % 6).ToString()));
     m_SynContext.Post(SetRichTextSafePost, threadNum);
     Thread.Sleep(1000);
     //MessageBox.Show(string.Format("线程{0}在{1}执行\n", threadNum, DateTime.Now.ToStandardTimeStr()));
     RingClockSet.StopBeep(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, string.Format("wav\\第{0}测试.wav", ((int)threadNum) % 6).ToString()));
     //FileHelper.appendToFile("记录时间" + DateTime.Now.ToStandardTimeStr(), AppDomain.CurrentDomain.BaseDirectory + "\\temp.txt");
 }
Example #2
0
 private void btnStopClock_Click(object sender, EventArgs e)
 {
     RingClockSet.StopBeep(AppDomain.CurrentDomain.BaseDirectory + "\\wav\\beep.wav");
 }
Example #3
0
 private void ClockRing(object obj)
 {
     try
     {
         ControledClock clk = obj as ControledClock;
         #region 把要使用的变量都用新的内存保存起来
         DateTime ringTime    = new DateTime();
         string   ID          = "";
         string   taskContent = "";
         int      interval    = 0;
         string   excuteId    = clk.ExcuteId;
         ringTime    = clk.RingTime;
         ID          = clk.ID;
         taskContent = clk.TaskContent;
         interval    = clk.Interval;
         //LogTextHelper.WriteLine("ClockRing:\t" + JsonConvert.SerializeObject(m_RingSet.firstRingClock));
         DateTime dtNow = DateTime.Now;
         #endregion
         //休眠到响铃时间
         Thread.Sleep(ringTime - dtNow);
         //睡醒之后,如果突然发现:咦,你这闹钟变了。因为变了之后是使用另外的线程去响铃了,这线程被抛弃了。停止他
         #region
         if (ringTime != clk.RingTime)
         {
             return;
         }
         #endregion
         #region  如果在响铃之前这闹钟已经被删除或被停止了,那么也没必要往下执行这线程了
         bool bRingClockExist = false;
         foreach (ControledClock temp in listControlClock)
         {
             if (ID == temp.ID)
             {
                 bRingClockExist = true;
                 if (temp.Status == "Stop")   //如果被改成暂停了也没必要往下执行
                 {
                     bRingClockExist = false;
                 }
             }
         }
         if (!bRingClockExist)
         {
             return;
         }
         #endregion
         //其实这里最好要锁住那个响铃闹钟,防止刚好响铃时,那个闹钟被更改
         //开始响铃
         RingClockSet.MciStartRing(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "wav\\" + WavToTaskcontent.GetWavfilename(taskContent)));
         //闹钟依据间隔继续使用?
         string tips = string.Format("响铃时间:{0}\n内容:{1}\nID:{2}", ringTime.ToStandardTimeStr(), taskContent, ID);
         #region 继续响铃?
         if (DialogResult.Yes == MessageBox.Show(tips, "继续响铃?", MessageBoxButtons.YesNo))
         {   //修改响铃闹钟集以及控制闹钟列表
             FileHelper.AddControledClockInfoToHistoryFile(clk, "响铃后继续");
             //更新listBoxControledClock,新信息显示在listBox1
             for (int i = 0; i < listControlClock.Count(); i++)
             {
                 if (ID == listControlClock[i].ID)
                 {
                     listControlClock[i].RingTime = ringTime.AddSeconds(interval);   //如果加上了interval,还是小于当前时间,怎么处理??
                     listControlClock[i].Status   = "Start";
                     if (ringTime.AddSeconds(interval) < DateTime.Now.AddSeconds(1)) //给1秒运行时间
                     {
                         MessageBox.Show("抱歉!设置的闹铃时间已过!自动为您停止!");
                         listControlClock[i].Status = "Stop";
                         m_SynContext.Post(SetListBoxSafePost, "");
                         RingClockSet.MciStopRing(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "wav\\" + WavToTaskcontent.GetWavfilename(taskContent)));
                     }
                     else
                     {
                         m_SynContext.Post(SetListBoxSafePost, "");
                         RingClockSet.MciStopRing(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "wav\\" + WavToTaskcontent.GetWavfilename(taskContent)));
                         //ClockRing(listControlClock[i]);   //这种方式想着不用创建线程更节省内存,但会造成MciRing函数只响上一次未响完的那一段。
                         BeginRingClock(listControlClock[i]);    //线程中重启线程
                     }
                 }
             }
         }
         else
         {
             //从响铃闹钟类中移除闹钟,并设置此闹钟状态为停止
             FileHelper.AddControledClockInfoToHistoryFile(clk, "响铃后不继续");
             //更新listBoxControledClock,新信息显示在listBox1
             for (int i = 0; i < listControlClock.Count(); i++)
             {
                 if (ID == listControlClock[i].ID)
                 {
                     listControlClock[i].Status = "Stop";
                     m_SynContext.Post(SetListBoxSafePost, "");
                     RingClockSet.MciStopRing(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "wav\\" + WavToTaskcontent.GetWavfilename(taskContent)));
                 }
             }
         }
         #endregion
     }
     catch (Exception ex)
     {
         LogTextHelper.WriteLine("响铃时出现错误!ERROR:" + ex.ToString());
     }
 }