Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取定时事件_C#_Timer - Fatal编程技术网

C# 获取定时事件

C# 获取定时事件,c#,timer,C#,Timer,在我的C#应用程序中,我需要调用基于计时器的方法。当我启动程序时,我希望计时器开始,然后每10秒调用一个方法 第二,如果我在10秒的时间跨度到期之前手动调用该方法,我希望计时器重置,并从执行开始等待10秒(不会在需要时触发)。换句话说,如果计时器在还剩6秒时,我手动触发-我希望计时器等待10秒-而不是在6秒时触发 创建这样的计时器的最佳方法是什么 一旦我有了计时器,我如何有效地控制它的手动过期 这门课适合你所有的需要 我希望计时器开始,然后每10秒调用一个方法 第一部分很简单,您需要将属性设置为

在我的C#应用程序中,我需要调用基于计时器的方法。当我启动程序时,我希望计时器开始,然后每10秒调用一个方法

第二,如果我在10秒的时间跨度到期之前手动调用该方法,我希望计时器重置,并从执行开始等待10秒(不会在需要时触发)。换句话说,如果计时器在还剩6秒时,我手动触发-我希望计时器等待10秒-而不是在6秒时触发

  • 创建这样的计时器的最佳方法是什么
  • 一旦我有了计时器,我如何有效地控制它的手动过期
  • 这门课适合你所有的需要

    我希望计时器开始,然后每10秒调用一个方法

    第一部分很简单,您需要将属性设置为10000,将属性设置为true并处理事件

    秒-如果我在10秒跨度之前手动调用该方法 到期时,我希望计时器重置-并从 执行

    手动触发其实并不那么容易。最好的方法是停止它,在经过的事件中执行它将要执行的任何操作,然后重新启动它

    然而,在这方面有一个重要的注意事项。您需要确保处理方法是可重入的,因为计时器是在手动触发的线程之外的另一个线程上执行的。如果您的方法可能需要10秒才能执行,这也是一个问题。使用a是最简单的方法

    为了演示计时器,这里有一个小程序,当你按enter键时,它会手动启动,然后等待两秒钟再次启动

    class Program
    {
        static void Main(string[] args)
        {
    
            var timer = new System.Timers.Timer();
            timer.Interval = 2000; // 2 seconds here
            timer.AutoReset = true; //Restart 
    
    
            Action<object, EventArgs> Elapsed = (object o, EventArgs e) => Console.WriteLine(DateTime.Now);
    
            timer.Elapsed += new System.Timers.ElapsedEventHandler(Elapsed);
            timer.Start();
            while (Console.ReadLine() != "quit")
            {
                timer.Stop();
                Elapsed.Invoke(new object(), EventArgs.Empty);
                timer.Start();
    
            }
        }
    }
    
    类程序
    {
    静态void Main(字符串[]参数)
    {
    var timer=new System.Timers.timer();
    timer.Interval=2000;//此处为2秒
    timer.AutoReset=true;//重新启动
    动作经过=(对象o,事件参数e)=>Console.WriteLine(DateTime.Now);
    timer.appeated+=新系统.Timers.ElapsedEventHandler(已用);
    timer.Start();
    while(Console.ReadLine()!=“退出”)
    {
    timer.Stop();
    调用(新对象(),EventArgs.Empty);
    timer.Start();
    }
    }
    }
    
    您能发布一些代码或伪代码以便我们能提供帮助吗?
    系统。线程。计时器
    是您的选择。请看一看以供参考,也请试着用完整的句子来写。这使问题更具可读性。另请参见@Spotifixus,我更喜欢它,因为它的属性(Interval、Autoreset、Enabled)和方法(Start、Stop)比线程化方法更合理