声明:
System.Timers.Timer timer = new System.Timers.Timer();
timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
button按钮事件:
timer.AutoReset = true;
timer.Interval =15;
timer.Start ();
timer调用的函数:
void timer_Elapsed(object sender, ElapsedEventArgs e)
{
Console.Out.WriteLine(DateTime.Now +" "+ DateTime.Now.Millisecond.ToString() + "timer in:" + nCountTimer.ToString());
}
运行结果:
运行程序后第一次点击button事件:
2008-5-8 17:38:21 170timer in:0
2008-5-8 17:38:21 170timer in:1
2008-5-8 17:38:21 190timer in:2
2008-5-8 17:38:21 210timer in:3
不解?为什么前2次进入的时间相同?(每次尝试都是这样)
第二次点击button事件:
2008-5-8 17:38:23 383timer in:0
2008-5-8 17:38:23 403timer in:1
2008-5-8 17:38:23 423timer in:2
2008-5-8 17:38:23 443timer in:3
2008-5-8 17:38:23 463timer in:4
运行正常,20ms进入一次,但我设置的进入间隔为15ms!
System.Timers.Timer timer = new System.Timers.Timer();
timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
button按钮事件:
timer.AutoReset = true;
timer.Interval =15;
timer.Start ();
timer调用的函数:
void timer_Elapsed(object sender, ElapsedEventArgs e)
{
Console.Out.WriteLine(DateTime.Now +" "+ DateTime.Now.Millisecond.ToString() + "timer in:" + nCountTimer.ToString());
}
运行结果:
运行程序后第一次点击button事件:
2008-5-8 17:38:21 170timer in:0
2008-5-8 17:38:21 170timer in:1
2008-5-8 17:38:21 190timer in:2
2008-5-8 17:38:21 210timer in:3
不解?为什么前2次进入的时间相同?(每次尝试都是这样)
第二次点击button事件:
2008-5-8 17:38:23 383timer in:0
2008-5-8 17:38:23 403timer in:1
2008-5-8 17:38:23 423timer in:2
2008-5-8 17:38:23 443timer in:3
2008-5-8 17:38:23 463timer in:4
运行正常,20ms进入一次,但我设置的进入间隔为15ms!
再请教一下 如何让timers.timer单线程执行?lock怎么用?我加上了还是会同时多次进入!
问题补充:附加独立测试代码
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Timers;
namespace WindowsApplication3
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
System.Timers.Timer timer = new System.Timers.Timer();
timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
timer.AutoReset = true;
timer.Interval =60;
timer.Start();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
public static void timer_Elapsed(object sender, ElapsedEventArgs e)
{
Console.Out.WriteLine(DateTime.Now + " " + DateTime.Now.Millisecond + " "+DateTime .Now.TimeOfDay.TotalMilliseconds );
}
}
}
运行结果: 间隔都设置到60了 初次进入达到了3次
2008-5-9 10:08:38 155 36518155.912
2008-5-9 10:08:38 155 36518155.912
2008-5-9 10:08:38 155 36518155.912
2008-5-9 10:08:38 185 36518185.9552
2008-5-9 10:08:38 246 36518246.0416
2008-5-9 10:08:38 306 36518306.128
2008-5-9 10:08:38 366 36518366.2144
2008-5-9 10:08:38 426 36518426.3008
2008-5-9 10:08:38 486 36518486.3872
2008-5-9 10:08:38 546 36518546.4736
2008-5-9 10:08:38 606 36518606.56
2008-5-9 10:08:38 666 36518666.6464
java学习笔记 --- 多线程(线程安全问题——同步代码块)
java学习笔记 --- 多线程(多线程的控制)
java学习笔记 --- 多线程(多线程的创建方式)
java学习笔记 --- 多线程(1)
java学习笔记 --- IO流小结
java学习笔记 --- IO(3)
java学习笔记 --- IO(2)
java学习笔记 --- IO(1)
把测试错误的图像重新挑选出来进行测试
- 最新文章
-
oracle过滤字母
spring 标签
描述一下你最常用的编程风格---JAVA
Java线程:线程状态的转换
Java陷阱之assert关键字
内连接、左外连接、右外连接、交叉连接区别
实例分析Java Class的文件结构
Android启动过程深入解析
Tomcat学习之Wrapper
jQuery设计思想
- 热门文章
-
总结:敏捷开发的愚见
django更换数据库时提示"django.db.utils.InternalError: (1366, "Incorrect string value: '\xE7\x94\xA8\xE6\x88\xB7' for column 'name' at row 1")"
总结:测试用例评审
测试用例设计——场景分析法
Ubuntu16.04+K8s安装配置(不FQ)
知识总结:测试用例
Docker学习:virtualbox安装和配置
Jenkins+Git+Docker+K8s部署
python-selenium-robotframework安装问题
Hibernate(1)