????????????C#???
???????????? ???????[ 2015/4/2 11:09:36 ] ????????C# ??????? ??
??????????????????????????????????????????д?????????????????:
?????????????д?????????????????????????????????????棬??????????????Publish-Subscribe??????????????????????????????????ó?????????????????????????
?????????C#???????????????????????????????????????????????
??????????????????????????????????????ù?????????????
??????????δ????????????????????????????????API???????????????????????????????????(smartClock)????????????????????????API????????????????????????????????????????????????????????????濾???????????豸?????????????????????????????????????????????????
????????????????????????????????????????????????(subject)????????????????濾???????????豸??????(observer)???????????????????????????????????????????????????????????????????
???????????.net??Event????????
????.net?е?Event??????????????????????.net??????????????????????У?????????????????????????????
?????????????????????????????????????API
????public void SetAlarmTime(TimeSpan timeSpan)
????{
????_alarmTime = _now().Add(timeSpan);
????RunBackgourndRunner(_now?? _alarmTime);
????}
????SetAlarmTime(TimeSpan timeSpan)?????????????????ú????????????????????????????while(true)????????????????????????????????????????
protected void RunInBackgournd(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();
}
}
???????????????????????????????????????ItIsTimeToAlarm(); ??????????????????????????.net?????event???????????
????1.?????(subject)????????event?? public event Action<Clock?? AlarmEventArgs> Alarm;
????2.?????(subject)????????????EventArgs????AlarmEventArgs???????????????????е????
????3.????(subject)??????·?????????
????var args = new AlarmEventArgs(_alarmTime.Value?? 0.92m);
????OnAlarmEvent(args);
????OnAlarmEvent?????????
????public virtual void OnAlarm(AlarmEventArgs e)
????{
????if(Alarm!=null)
????Alarm(this??e);
????}
?????????????????淶?????????-AlarmEventArgs?????-Alarm(?????????KeyPress)?????????????? void OnAlarm()????Щ???????????????????????淶??
??????
???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11