文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络网络编程Asp.NetCommunity Server专题七: Job & Timer
精品推荐
特别推荐
·ASP.NET数据库操作层设计
·理解掌握ASP.NET与客户端缓存之HTTP协议
·技巧实例:ASP.NET生成静态页面实现方法
·ASP.NET、JSP及PHP之间的抉择
·.net基础知识错误注意二十二点知识
·asp.net2.0学习历程 菜鸟到中级程序员的飞跃
·.NET基础知识-什么是.NET
·初学C#+ASP.NET+Oracle时积累的备忘点滴
热点TOP10
·ASP.NET:根据IP获取当地天气预报的实现
·分享C#动态生成文字图片解决方案
·asp.net2.0学习历程 菜鸟到中级程序员的飞跃
·绝对精华:ASP.NET常用的三十三种实用代码
·ASP.NET数据库操作层设计
·DataTable控件的使用
·web.config配置文件示例
·asp.net技术的学习顺序问题

Community Server专题七: Job & Timer

日期:2007年7月8日 作者: 查看:[大字体 中字体 小字体]

<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(),现释放之前为Job实例化的非托管资源(其实就是调用Timer与Job下面的Dispose方法,这也是为什么Job要实现IDispose接口的原因,是想一下,如果前一次定义的定时器没有被释放,然后又接着实例化一个,然后这样多重复几次...哈哈,你的CS就会有N个线程在跑,服务器很快就会挂掉的)。

释放完资源后(无论有没有CS都会这么做),接着就会实例化每个实现了IJob的类,根据上述的配置文件定义一个Timer或者让每个Job都定义一个自己的Timer(这就相当于给钟点工统一一个工作时间或者给每个钟点工都规定一个工作时间,规定完后该干什么的就干去吧,只要时间到了就得干活)。再往下,就自己分析吧,也就没有什么难题了…

不知道为什么我的团队中的几个成员老是不能理解这个执行过程,我解释了半天,最后发现了问题:

回到CSHttpModule.cs文件中来,这是一个实现了IHttpModule接口的类,实现该接口的类都要有一个Init方法,我们看到,所有的Job开始初始化的起点也是从这个方法中调用的。但是我的小组成员都认为每个Http请求都会调用一次Init方法,

public void Init(HttpApplication application)

{

    // Wire-up application events

    //

    application.BeginRequest += new EventHandler(this.Application_BeginRequest);

    application.AuthenticateRequest += new EventHandler(Application_AuthenticateRequest);

    application.Error += new EventHandler(this.Application_OnError);

    application.AuthorizeRequest += new EventHandler(this.Application_AuthorizeRequest);

   

    //settingsID = SiteSettingsManager.GetSiteSettings(application.Context).SettingsID;


上一页 [1] [2] [3] 下一页 



上一篇:Community Server专题六:Delegates & Events

下一篇:Community Server专题八:MemberRole之Membership

相关文章:
·Windows server 2003 DNS 全攻略(二)
·MS SQL Server中的CONVERT日期格式化大全
·WINDOWS 2000 ADVANCED SERVER群集安装
·基于SQL Server的WEB应用程序注入攻击详细介绍
·JSP中tomcat的SQLServer2000数据库连接池的配置
·SQL Server 2005:数据类型最大值
·TSM Server,Client,TDPO安装配置手记
相关软件:
·SQL Server 2000 基础系列课程视频
·Snappy Fax Network Server 2.11.1.1
·Windows 2003 Server 简体中文企业版(免激活)ISO
·青春期性教育专题片(下)
·毛泽东思想概论笔记第二篇第六专题2
·如何在 Solaris 安裝 Anonymous FTP Server
·ArGoSoft Mail Server Pro 1.8.9.6

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot