选择显示字体大小

结合singleton和线程做一个定时服务

     design pattern的singleton是一个虽然简单但很有用处的模式,它的作用就是使类只能有一个实例,不需要实例化,而提供一个唯一的全局切入点。如果再结合上线程,完全可以实现一个定时服务,不象timer控件,它不仅可以应用在windows应用程序中,同样可以应用于web程序中,就象刚才蓝说的那种效果。看下面这个简单的例子吧。
  
  using system;
  using system.threading ;
  
  namespace testall
  {
   /// <summary>
   /// 一个web job的示例类
   /// </summary>
   /// <remarks>符合design pattern的singleton模式</remarks>
   public class teststatic
   {
   /// <summary>
   /// 定时间隔
   /// </summary>
   /// <remarks>通过修改这个常量决定间隔多长时间做某件事</remarks>
   const int delay_times = 1000 ;
  
   /// <summary>
   /// 一个计数器
   /// </summary>
   private int m_intcounter = 0;
  
   /// <summary>
   /// 是否退出
   /// </summary>
   private bool m_bcanexit = false ;
  
   /// <summary>
   /// 线程
   /// </summary>
   private thread thread ;
  
   /// <summary>
   /// 自身实例
   /// </summary>
   /// <remarks>注意,这是实现singleton的关键</remarks>
   private static teststatic instance = new teststatic() ;
  
   public int counter
   {
   get
   {
   return this.m_intcounter ;
   }
   set
   {
   this.m_intcounter = value ;
   }
   }
  
   public bool canexit
   {
   set
   {
   this.m_bcanexit = value ;
   }
   }
  
   /// <summary>
   /// 构造函数
   /// </summary>
   public teststatic()
   {
   //
   // todo: add constructor logic here
   //
   this.m_intcounter = 0 ;
   console.writeline("constructor is running") ;
   this.thread = new thread(new threadstart(threadproc)) ;
   thread.name = "online user" ;
   thread.start() ;
   console.writeline("完毕") ;
   }
  
  
   /// <summary>
   /// 实现singleton的关键
   /// </summary>
   /// <returns>类本身的一个实例</returns>
   /// <remarks>唯一的全局切入点</remarks>
   public static teststatic getinstance()
   {
   return instance ;
   }
  
   /// <summary>
   /// 线程工作函数
   /// </summary>
   /// <remarks>想做什么写在这儿</remarks>
   private void threadproc()
   {
   while(!this.m_bcanexit)
   {
   this.m_intcounter ++ ;
   console.writeline(this.m_intcounter.tostring()) ;
   thread.sleep(delay_times) ;
   }
   }
  
   static void main(string[] args)
   {
   //
   // todo: add code to start application here
   //
   console.writeline(teststatic.getinstance().counter.tostring()) ;
   console.read() ;
   teststatic.getinstance().canexit = true ;
   }
  
   }
  
  }
  
    


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons