在c#中循环计时器

时间:2014-04-21 06:57:51

标签: asp.net

我希望在一段时间内执行一段代码,并希望在证书时间段后退出。

下面有一段代码进入无限循环。

   protected void Page_Load(object sender, EventArgs e)
    {
        System.Timers.Timer aTimer;
        aTimer = new System.Timers.Timer();
        aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
        aTimer.Interval = 2000;
        aTimer.Enabled = true;


    }

   private static void OnTimedEvent(object source, ElapsedEventArgs e)
   {
       try
        {
            Console.WriteLine("Page loaded", null);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message, "Default");
        }
   } 

我想运行此代码1分钟。 那么如何在50或60秒后停止执行并退出循环。

Plz帮助我。

2 个答案:

答案 0 :(得分:0)

试试这个:

Stopwatch stopwatch = new Stopwatch();

// Begin timing
stopwatch.Start();

// Do something
for (int i = 0; i < 1000; i++)
{
    Thread.Sleep(60);
}

// Stop timing
stopwatch.Stop();

答案 1 :(得分:0)

您是否可以在现有m_SetEnabled = true中设置布尔值OnElapsedTime event,然后添加if(m_SetEnabled) { m_SetEnabled = false; return; }以忽略被触发的单个事件。

使用Timer类。

http://msdn.microsoft.com/en-us/library/system.timers.timer(v=vs.71).aspx

public static void Main()
{
    System.Timers.Timer aTimer = new System.Timers.Timer();
    aTimer.Elapsed+=new ElapsedEventHandler(OnTimedEvent);
    aTimer.Interval=5000;
    aTimer.Enabled=true;

    Console.WriteLine("Press \'q\' to quit the sample.");
    while(Console.Read()!='q');
}

 // Specify what you want to happen when the Elapsed event is raised.
 private static void OnTimedEvent(object source, ElapsedEventArgs e)
 {
     Console.WriteLine("Hello World!");
 }

Elapsed事件将每隔X秒启动一次,由Timer对象上的Interval属性指定。它将调用您指定的Event Handler方法,在上面的示例中为OnTimedEvent