惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

TaoSecurity Blog
TaoSecurity Blog
Jina AI
Jina AI
雷峰网
雷峰网
月光博客
月光博客
The GitHub Blog
The GitHub Blog
WordPress大学
WordPress大学
B
Blog RSS Feed
美团技术团队
C
CXSECURITY Database RSS Feed - CXSecurity.com
小众软件
小众软件
Security Latest
Security Latest
Microsoft Azure Blog
Microsoft Azure Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
Cybersecurity and Infrastructure Security Agency CISA
Last Week in AI
Last Week in AI
A
Arctic Wolf
Latest news
Latest news
Attack and Defense Labs
Attack and Defense Labs
I
Intezer
F
Fortinet All Blogs
罗磊的独立博客
MongoDB | Blog
MongoDB | Blog
Webroot Blog
Webroot Blog
S
Secure Thoughts
Help Net Security
Help Net Security
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
V
Visual Studio Blog
P
Proofpoint News Feed
博客园 - 【当耐特】
P
Privacy International News Feed
V
Vulnerabilities – Threatpost
Stack Overflow Blog
Stack Overflow Blog
Know Your Adversary
Know Your Adversary
云风的 BLOG
云风的 BLOG
Hacker News: Ask HN
Hacker News: Ask HN
L
LINUX DO - 最新话题
H
Help Net Security
爱范儿
爱范儿
酷 壳 – CoolShell
酷 壳 – CoolShell
S
SegmentFault 最新的问题
Forbes - Security
Forbes - Security
T
Tailwind CSS Blog
量子位
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
T
Tenable Blog
Cloudbric
Cloudbric
N
News and Events Feed by Topic
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Hugging Face - Blog
Hugging Face - Blog

博客园 - Laser.NET

WumiiRelatedItems C#创建一个线程为什么会消耗那么多的内存? 【跨平台的.NET解决方案】-Mono越来越成熟! [转]英语中符号以及标点符号的读法(或许对查看英文资料的人有些帮助) 06年中国互联网调查结果之:网民上网经常使用的网络服务 让短信更好的为企业服务!——短消息交互平台简介 GoF Patterns [ASP.NET2.0]一个方便使用的在线截图Web控件-WebImageMaker [转]经典的几个网络签名:) [新手点滴] IDbCommand.Prepare()方法。 [原创] 我的生活我安排,我的调度我做主!——介绍一个 日程安排/工作计划/任务调度 的Scheduling组件。(一) [ADO.NET]由数据库触发器引发的问题 [转] IE的bug列表 [C#语言] C#语言中又一个自认为不太理想的地方。。。 [辅助工具] 一个方便将ASP代码升级到ASP.NET的小工具 -- ASP Code Migrator! 关于ASP.NET页面嵌入代码的高亮显示的问题。 [C#语言] C#语法中一个很奇怪的地方:) 这样的网站,2个月是否可能?? [新手点滴] C# vs VB.NET 哪个好?
[原创] 我的生活我安排,我的调度我做主!——介绍一个 日程安排/工作计划/任务调度 的Scheduling组件。(二)
Laser.NET · 2006-01-03 · via 博客园 - Laser.NET

接着上一次的关于Scheduling Component的介绍,今天继续介绍几个稍微复杂点的示例,并且提供测试和Demo程序的下载。
 

C11. 从一年中的第100天开始,每隔5天执行一次:

<calendar>
        <year>
                <day from="100" interval="5">
                </day>
        </year>
</
calendar>

C12. 继续上面的例子,我们还可以希望它能够从一年中的100小时开始,每隔50小时运行一次:

<calendar>
        <year>
                <hour from="100" interval="50">
                </hour>
                <day from="100" interval="5">
                </day>
        </year>
</
calendar>

C13. 现在公司里一般按照财政年度来进行规划和安排,假设一个公司的财政年度是从每年的319号,到次年的318号,那么每个财政年度的第360天可以表示如下:

<calendar>
        <year firstMonth="3" firstDay="19">
                <day appoint="360">
                </day>
        </year>
</
calendar>

C14. 同样我们也可以表示财政季度,假设财政季度从每个季度的第2个月的第18天开始,到下个季度的第2个月的第17天。那么每个财政季度的第88天可以表示如下:

<calendar>
        <quarter firstMonth="2" firstDay="18">
                <day appoint="88">
                </day>
        </quarter>
</
calendar>

C15. 另外我们也可以把每个月从领工资的那天开始算起,作为工作月。假如每月5号发工资,那么要表示每次拿了工资后的第10天,可以如下所示:

<calendar>
        <month firstDay="5">
                <day base="0" appoint="10">
                </day>
        </month>
</
calendar>

C16. 对于学校的学生来说,每个学期应该是它们作为规划的时间范围,下面的例子表示某个学校的两个学期中的第20个星期:

<calendar>
        <term beginMonth="9" beginDay="8" endMonth="1" endDay="15">
                <week appoint="20">
                </week>
        </term>
        <term beginMonth="2" beginDay="13" endMonth="7" endDay="30">
                <week appoint="20">
                </week>
        </term>
</
calendar>

C17. 有的时候你可能会从某个月的某天开始跨度几个月到另外一个月的某天结束作为完成某个任务或者完成某个项目的时期。比如某个很庞大的项目,公司计划从88号开始,中间跨度2年,做到后年的66号:

<calendar>
        <term beginMonth="8" beginDay="8" yearSpan="2" endMonth="6" endDay="6">
                <week appoint="20">
                </week>
        </term>
</
calendar>

C18. 在比如有个短期任务,需要三个月的时间,从某个月的8号开始,到三个月后的6号结束:

<calendar>
        <span beginDay="8" monthSpan="3" endDay="6">
                <week appoint="10">
                </week>
        </span>
</
calendar>

C19. 有的时候我们需要指定某个具体的时间范围,比如从2005年的128号到2006年的36号:

<calendar>
        <scope begin="2005-12-8" end="2006-3-6">
                <day appoint="88">
                </day>
        </scope>
</
calendar>

C20. 我们还可以在日历规则中对时间的安排来进行分组和规类,这样可读性可能会好点:

<calendar>
        <group comment="工作日">
                <week>
                        <day from="1" to="5">
                        </day>
                </week>
        </group>
        <group comment="休息日">
                <week>
                        <day appoint="6,0">
                        </day>
                </week>
        </group>
</
calendar>

C30. 还可以把某个组匹配的时间排除在外,比如下面的例子在秒数是6的整数倍的时候执行,但是在10的整数倍的时候除外:

<calendar>
        <second interval="6">
        </second>
        <exclude>
                <second interval="10">
                </second>
        </exclude>
</
calendar>

C32. 每年的5月的第2个星期天为母亲节和6月的第三个星期天为父亲节:

<calendar>
        <year>
                <month appoint="5">
                        <week firstDay="1" appoint="2">
                                <day base="1" appoint="7">
        <!-- 将星期一设为每个星期的第一天,星期天则为第七天 -->
                                </day>
                        </week>
                </month>
                <month appoint="6">
                        <week firstDay="1" appoint="3">
                                <day base="1" appoint="7">
        <!-- 将星期一设为每个星期的第一天,星期天则为第七天 -->
                                </day>
                        </week>
                </month>
        </year>
</
calendar>

C33. 假设每天都工作的很晚,除开母亲节和父亲节要提早回家问候父母:

<calendar>
        <year>
                <week>
                        <day from="1" to="5">
                        </day>
                </week>
                <exclude>
                        <month appoint="5">
                                <week firstDay="1" appoint="2">
                                        <day base="1" appoint="7">
                                        </day>
                                </week>
                        </month>
                        <month appoint="6">
                        <week firstDay="1" appoint="3">
                                        <day base="1" appoint="7">
                                        </day>
                                </week>
                        </month>
                </exclude>
        </year>
</
calendar>

C34. 日历规则CalendarRule还是可以自身执行的规则,里面可以嵌套执行的指令。比如每次母亲节和父亲节,都提醒您慰问父母:

<calendar>
        <year>
                <month appoint="5">
                        <week firstDay="1" appoint="2">
                                <day base="1" appoint="7">
                                        <hour appoint="8">
                                                <execute>
                                                        <instruction command="Message">
                                                                <parameter name="Icon" value="Information" />
                                                                <parameter name="Text" value="今天是母亲节,不要忘了忘了慰问母亲哦:)"/>
                                                        </instruction>
                                                </execute>
                                        </hour>
                                </day>
                        </week>
                </month>
                <month appoint="6">
                        <week firstDay="1" appoint="3">
                                <day base="1" appoint="7">
                                        <hour appoint="8">
                                                <execute>
                                                        <instruction command="Message">
                                                                <parameter name="Icon" value="Information" />
                                                                <parameter name="Text" value="今天是父亲节,不要忘了忘了慰问父亲哦:)"/>
                                                        </instruction>
                                                </execute>
                                        </hour>
                                </day>
                        </week>
                </month>
        </year>
</
calendar>

C35. 在日历规则中还可以指定约束来过虑匹配的时间,比如从工作时间中过虑出所有的节假日:

<calendar>
        <year>
                <week>
                        <day from="1" to="5">
                                <constraint>
                                        <!-- 排除掉节假日 -->
                                        <not>
                                                <holiday month="1" day="1" /> <!-- 元旦 -->
                                        </not>
                                        <not>
                                                <vacation beginMonth="5" beginDay="1" endMonth="5" endDay="7" /> <!-- 五一7天假 -->
                                        </not>
                                        <not>
                                                <vacation beginMonth="10" beginDay="1" endMonth="10" endDay="7" /> <!-- 国庆7天假 -->
                                        </not>
                                </constraint>
                        </day>
                </week>
        </year>
</
calendar>


这次提供了两个测试程序:
LaserReminder:是一个托盘程序,它会按照config文件中的scheduling配置,定期地提醒您。他可以弹出MessageBox框,也可以通过命令行执行其他程序。

SchedulePredictor:一个测试程序,您可以在中间的文本框中输入Schedule的XML,然后按下中间的按钮,它会预测出未来的规则执行时间在什么时候。

相关文件的下载如下:
/Files/Laser_Lu/SchedulingComponentDemo.rar