zoukankan      html  css  js  c++  java
  • System.Timers.Timer 多线程问题[转]

    已解决问题] System.Timers.Timer 多线程 ,同时首次进
    声明:
    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怎么用?我加上了还是会同时多次进入!

    提问者:wills - 初学一级

    问题补充:附加独立测试代码

    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

  • 相关阅读:
    百度地图画线----可以加上起始位置和终点位置(当前例子没有加)
    android更新SDK时候丢失annotations.jar 导致支持库报错
    java批量转换图片格式
    自定义环形进度条
    第三方账号登录--QQ登录,以及QQ微博账号登录
    矩阵的基本运算,相乘,逆,转置,伴随
    中值滤波和均值滤波C++代码
    opengl 反走样 混合 多重采样 blend multisample
    四元数和欧拉角,轴角对之间的相互转化
    PHP 接口(interface) 和 抽象类(abstract class)
  • 原文地址:https://www.cnblogs.com/aaa6818162/p/1576544.html
Copyright © 2011-2022 走看看