System.Threading.Timer 定制Web服务器定时器执行事务!
2015-07-08 21:24
337 查看
System.Threading.Timer 定制Web服务器定时器执行事务!
原来在使用System.Threading.Timer的时候碰到一些问题,定时器在运行一段时间后,自动停止!原来是System.Threading.Timer运行一阵子后,IIS线程池开始垃圾回收的时候,timer被回收,timer中的各项被Dispose。所以,定时器就实效了!
解决的方法是在Global中,定义System.Threading.Timer为全局变量,不是在方法中!在方法中定义就会被IIS线程池回收!
演示一个简单的例子:Application["A"]全局变量每一秒加1,只要IIS不停止网站,全局变量就会一直增加!
Global.aspx 代码:
public class Global : System.Web.HttpApplication
{
public static System.Threading.Timer stateTimer = null;
protected void Application_Start(object sender, EventArgs e)
{
Application["A"] = "0";
System.Threading.AutoResetEvent autoEvent = new System.Threading.AutoResetEvent(false);
System.Threading.TimerCallback timerDelegate = new System.Threading.TimerCallback(timerCall);
stateTimer = new System.Threading.Timer(timerDelegate, autoEvent, 0, 1000);
}
private void timerCall(object arts)
{
Application["A"] = (int.Parse(Application["A"].ToString()) + 1).ToString();
}
}
MSDN资料:
语法
C#
public Timer(
TimerCallback callback,
Object state,
int dueTime,
int period
)
参数
callback
类型:System.Threading.TimerCallback
一个 TimerCallback 委托,表示要执行的方法。
state
类型:System.Object
一个包含回调方法要使用的信息的对象,或者为 nullNothingnullptrnull 引用(在 Visual Basic 中为 Nothing)。
dueTime
类型:System.Int32
调用 callback 之前延迟的时间量(以毫秒为单位)。指定 Timeout.Infinite 可防止启动计时器。指定零 (0) 可立即启动计时器。
period
类型:System.Int32
调用 callback 的时间间隔(以毫秒为单位)。指定 Timeout.Infinite 可以禁用定期终止。
相关文章推荐
- c#第四次作业 c#操作MySQL数据库
- [leedcode 27] Remove Element
- Oracle EM错误,java.lang.Exception: Exception in sending Request :: null 分类: Oracle 2015-07-08 21:24 44人阅读 评论(0) 收藏
- C语言 用for语句老实现打印九九乘法口诀表
- Java中的泛型
- SQL中Group By的使
- Linux的内存管理机制
- [iOS]深入浅出 iOS 之多线程 NSThread
- 大公司最喜欢问的Java集合类面试题
- [UI] 精美UI界面欣赏[11]
- Web Components - 面向未来的组件标准
- 一个典型的 jquery flexigrid配置
- ASP.NET通过Global.asax和Timer定时器 定时调用WebService 运行后台代码
- 四、openCV学习笔记(High-level GUI and Media I/O)
- Java读取文件夹大小的6种方法及代码
- OpenLayers3之ol.control.ZoomToExtent
- 2015.7.8 第三课 课程重点(css:认识css样式)
- [.net 面向对象程序设计进阶] (9) 序列化(Serialization) (一) 二进制流序列化
- 我所了解的JavaScript糟粕和鸡肋
- VMware设置NAT网络