<job name = "RebuildThumbnailsJob" type = "CommunityServer.Galleries.Components.RebuildThumbnailsJob, CommunityServer.Galleries" picturesPerRun = "25" enabled = "true" enableShutDown = "false" />
</Jobs>
解释一下这些xml的节点意思:
<Jobs minutes = "5" singleThread = "false">
minutes:执行回调函数TimerCallback的时间与时间间隔,这里是5分钟,也就是说执行回调函数在初始化请求之后的五分钟开始,并且每五分钟一次。
singleThread:是单线程还是多线程,前面说过为Timer创建的TimerCallback的实例不在创建计时器的线程中执行,而是在系统提供的一个单独线程池线程中执行,如果值为“false”就会为每个Job创建一个Timer线程,如果为“true”就创建一个Timer。
<job>节点比较灵活,一些属性是该节点特有的,这是根据实现IJob接口类的需要决定的,以Email发送的类为例:
<job singleThread = "false" minutes = "5" name = "Emails" type = "CommunityServer.Components.EmailJob, CommunityServer.Components" enabled = "true" enableShutDown = "false" failureInterval = "1" numberOfTries = "10" />
singleThread:当头CS版本中没有用到。
Minutes:执行回调函数TimerCallback的时间与时间间隔,这里是5分钟。
name:该Job的唯一标识。
type:该Job所在的名字空间,逗号后面的是该Job所在的程序集dll文件名称。
enabled:如果为“false”该Job会被关闭,也就是不会实例化一个定时器。“true”则为开启该Job。
enableShutDown:这个有点意思,用途是当该Job在执行Execute时,如果长生异常是否关闭这个Job,也就是说是否还允许它再次运行。“false”表示允许,“true”表示不允许。
failureInterval:如果发送邮件失败,与下次尝试再次发送的时间间隔,单位是分钟。
numberOfTries:如果发送邮件失败,该Job会尝试几次,这里是10次。
现在回到我们开始时候在CSHttpModule.cs中看到的这句:
Jobs.Instance().Start();
首先调用Jobs,实例化一个Jobs类,这个类在CS中有且只有一个实例。之后调用Jobs中的Start()方法。Jobs为了确保系统的安全,在开始之前先调用Stop(),现释放之前为
| 对此文章发表了评论 |

