结合singleton和线程做一个定时服务(给蓝)-.Net技术-3P代码网
繁体中文
设为首页
加入收藏
当前位置:.Net技术首页 >> Asp.Net开发 >> 结合singleton和线程做一个定时服务(给蓝)

结合singleton和线程做一个定时服务(给蓝)

2007-07-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:design pattern的singleton是一个虽然简单但很有用处的模式,它的作用就是使类只能有一个实例,不需要实例化,而提供一个唯一的全局切入点。如果再结合上线程,完全可以实现一个定时服务,不象Timer控件,它不仅...

design pattern的singleton是一个虽然简单但很有用处的模式,它的作用就是使类只能有一个实例,不需要实例化,而提供一个唯一的全局切入点。如果再结合上线程,完全可以实现一个定时服务,不象Timer控件,它不仅可以应用在windows应用程序中,同样可以应用于web程序中,就象刚才蓝说的那种效果。看下面这个简单的例子吧。

using System;

using System.Threading ;

namespace testall

{

///

/// 一个web job的示例类

///

/// 符合design pattern的singleton模式

public class TestStatic

{

///

/// 定时间隔

///

/// 通过修改这个常量决定间隔多长时间做某件事

const int DELAY_TIMES = 1000 ;

///

/// 一个计数器

///

private int m_intCounter = 0;

///

/// 是否退出

///

private bool m_bCanExit = false ;

///

/// 线程

///

private Thread thread ;

///

/// 自身实例

///

/// 注意,这是实现singleton的关键

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 ;

}

}

///

/// 构造函数

///

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("完毕") ;

}

///

/// 实现singleton的关键

///

/// 类本身的一个实例

/// 唯一的全局切入点

public static TestStatic GetInstance()

{

return instance ;

}

///

/// 线程工作函数

///

/// 想做什么写在这儿

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 ;

}

}

}

责任编辑:admin
相关文章