Exemplo n.º 1
0
 protected void RunBackgourndRunner(Func<DateTime> now,DateTime? alarmTime )
 {
     if (alarmTime.HasValue)
     {
         var cancelToken = new CancellationTokenSource();
         var task = new Task(() =>
         {
             while (!cancelToken.IsCancellationRequested)
             {
                 if (now.AreEquals(alarmTime.Value))
                 {
                     //闹铃时间到了
                     ItIsTimeToAlarm();
                     cancelToken.Cancel();
                 }
                 cancelToken.Token.WaitHandle.WaitOne(TimeSpan.FromSeconds(2));
             }
         }, cancelToken.Token, TaskCreationOptions.LongRunning);
         task.Start();
     }
 }