c#重复活动(比如日历)

时间:2012-02-04 00:56:16

标签: c# oop calendar logic

我一直在努力为重复发生的事件设计支持(就像你在Outlook或任务管理器中看到的那样)。我一直在大力挖掘Google和StackOverflow,但运气不好。

想知道是否有人有任何指针或资源。

'要求'

  • 支持每日活动(周一,周二,周四上午10点每15分钟发生一次)
  • 每月活动

任何更多都是奖励,但这些是最低限度。

谢谢!

5 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

我使用的是内置的TaskScheduler。这里有一个易于使用的包装器:http://taskscheduler.codeplex.com/

如果您还没有,请在开始菜单中搜索任务计划程序并使用它。该包装器基本上允许您以编程方式使用GUI执行所有操作。

答案 2 :(得分:2)

鲍勃为this question提供的答案非常好。他的解决方案基于SQL Server团队的sysschedules工作。

http://technet.microsoft.com/en-us/library/ms178644.aspx

答案 3 :(得分:1)

检查iCal WikiiCal RFC(特别是关于“持续时间”和“重复规则”的部分)。我认为它将为你提供一些如何代表此类事件的良好起点。

摘自RFC:

 ... For example "the last work day of the month" could be represented as:
   FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1

答案 4 :(得分:-1)

如果您要解决的问题是您只能在程序运行时响应此类事件,那就是这样。解决此问题最实用的方法是在后台运行程序,最常见的是在任务栏上显示通知图标。

如果问题是您不确定如何跟踪此类事件,您可以使用现有框架(请参阅roken的答案),设置计时器(研究System.Threading.Timer),或定期将DateTime.Now与各种DateTime进行比较对象。对于后两者,您需要序列化DateTime对象以在会话之间将它们保存到磁盘。