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 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器