作用域
来源:互联网 发布:python渗透测试教程 编辑:程序博客网 时间:2024/06/10 11:59
昨天花了2个小时调试有时候启动了定时轮询,有时候没有启用定时轮询的bug,最后发现竟然是作用域的问题,比较汗颜,下面就是有bug的这个代码的简单写法:
using System;
using System.Timers;
using System.Threading;
class Program
{
static void Main(string[] args)
{
Begin();
Console.ReadLine();
}
public static void Begin()
{
TimerCallback callbackMethod = new TimerCallback(Program.Check);
int pollCycleInMilliseconds = 180000;
System.Threading.Timer pollTimer = new System.Threading.Timer(
callbackMethod, null, pollCycleInMilliseconds, pollCycleInMilliseconds);
}
public static void Check(object notUsed)
{
Console.Write(DateTime.Now);
}
}
出bug是因为这里的 System.Threading.Timer pollTimer 是一个局部变量,这个变量出了他的作用域,可能会被销毁以及垃圾回收,这时候,自然就没有了定时轮询的触发了。
实际的代码比这里要复杂很多,是个WEB应用。一直没想到是作用域的问题才导致花了这么长时间找bug。把这个我碰到的bug记录下来,让碰到类似问题的人也好有思路提醒。
- 作用域::的作用
- 作用域的作用
- 作用域
- 作用域
- 作用域
- 作用域
- 作用域::
- 作用域
- 作用域
- 作用域
- 作用域
- 作用域
- 作用域
- 作用域
- 作用域
- 作用域
- 作用域
- 作用域
- 条款14: 在资源管理类中小心copying行为
- 在EXCEL表格中将文字竖排的方法
- 无题诗一首
- 请教:如何知道当前所用的gcc调用的是哪个版本的glibc库?及这个glibc库的位置?谢谢!
- Makefile详解
- 作用域
- div 秘籍
- vector,deque,list区别
- 学习笔记:7种结构型设计模式简单对比
- 升级你的操作系统的flashplayer到10
- 编程初学者必须知道的十件事
- 做 MAS的 人
- 大型数据库合并
- udev 自动挂载u盘