Как мне остановить само повторение имени 10000 раз, используя таймер? - PullRequest
0 голосов
/ 23 февраля 2012

Как я могу остановить повторение имени в 10000 раз ... Сейчас оно повторяется каждые 5 секунд ... но через 24 часа оно должно повторяться не более 10000 раз ... Как мне остановить таймер в данный момент? время

Программа ---:

class Timer1
{
   public System.Timers.Timer aTimer;


   public static void Main() 
   {
       System.Timers.Timer aTimer;
       aTimer = new System.Timers.Timer();
       aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
       aTimer.Interval = 5000;
       aTimer.Enabled = true;
       Console.WriteLine("Press Enter to Exit the Program");
       Console.ReadLine();
   }
    private static void OnTimedEvent(object source, ElapsedEventArgs e)
    {
        Console.WriteLine("Name YaP {0}", e.SignalTime);
    }

}

Ответы [ 3 ]

2 голосов
/ 23 февраля 2012

Добавьте переменную, чтобы отслеживать, сколько раз она была запущена (count), и увеличивайте ее при каждом срабатывании. После того, как вы нажмете 10 000 (или любое другое число), установите состояние таймера на останов с помощью stop().

class Timer1
{
   public System.Timers.Timer aTimer;
   public static int count; // Keeps track of how many times its been fired

   public static void Main() 
   {
       count = 0; // Initialize to zero
       System.Timers.Timer aTimer;
       aTimer = new System.Timers.Timer();
       aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
       aTimer.Interval = 5000;
       aTimer.Enabled = true;
       Console.WriteLine("Press Enter to Exit the Program");
       Console.ReadLine();
   }
    private static void OnTimedEvent(object source, ElapsedEventArgs e)
    {
        if(count >= 10000) // Check
        {
            aTimer.stop(); // Stop the timer
        }
        Console.WriteLine("Name YaP {0}", e.SignalTime);
        ++count;
    }

}
0 голосов
/ 23 февраля 2012
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Timers;

namespace Time_Writer
{
    class Program
    {
        static int count = 1;
        static double seconds
        private static System.Timers.Timer aTimer;

        static void Main(string[] args)
        {
            aTimer = new System.Timers.Timer();
            aTimer.Elapsed += new System.Timers.ElapsedEventHandler(aTimer_Elapsed);
            aTimer.Interval = 8600;
            aTimer.Enabled = true;
            Console.WriteLine("Press Enter to Exit the Program\n");
            Console.ReadLine();

        }
        private static void aTimer_Elapsed(object source,ElapsedEventArgs e)
        {

            Console.WriteLine("Current time is :{0}\n ", e.SignalTime.TimeOfDay.ToString());

            seconds += 8.6;
            count += 1;
            if (count > 5 || seconds == 43) //change count to 10000, seconds to 86400
            {
                aTimer.Enabled = false;

                Console.WriteLine("Timer is off at {0}\n\n",e.SignalTime.TimeOfDay.ToString());

                //Reset variables and re-enable the timer if you desire to.
                count = 0;
                seconds = 0;
                aTimer.Enabled = true;
            }
        }

    }
}

Я надеюсь, что это поможет вам с вашим ответом всегда рады помочь!Посетите ссылку ниже для получения дополнительной помощи.

// http://msdn.microsoft.com/en-us/library/system.timers.elapsedeventargs.signaltime.aspx

0 голосов
/ 23 февраля 2012

Используйте счетчик в соответствии с вашими требованиями, а не время расчетов. Если вам нужно, чтобы он запускался через каждые x минут или x секунд, можно рассчитать время. Прямо сейчас вы хотите, чтобы он работал 10000 раз, а затем увеличивал счетчик при каждом повышении события Elasped. когда это 10000-й раз, отключите Elasped для запуска на aTimer.Enabled = false или aTimer.Stop().

класс Timer1 { public System.Timers.Timer aTimer; public static int counter;

   public static void Main()  
   { 
       counter = 0;
       System.Timers.Timer aTimer; 
       aTimer = new System.Timers.Timer(); 
       aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent); 
       aTimer.Interval = 5000; 
       aTimer.Enabled = true; 
       Console.WriteLine("Press Enter to Exit the Program"); 
       Console.ReadLine(); 
   } 
    private static void OnTimedEvent(object source, ElapsedEventArgs e) 
    {     
        counter = counter + 1;     
        Console.WriteLine("Name YaP {0}", e.SignalTime); 
        if(counter == 10000)
        aTimer.Enabled = false;
    } 

} 
...