C#定时器和Thread.sleep [英] C# Timer or Thread.Sleep

查看:1663
本文介绍了C#定时器和Thread.sleep的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我运行一个Windows服务和使用循环和的Thread.Sleep重复任务,会是最好使用一个计时器的方法?

如果是一个code例子将是巨大的。

我目前使用这种code重复

  INT curMinute;
INT最后一分钟= DateTime.Now.AddMinutes(-1).Minute;而(条件)
{
   curMinute = DateTime.Now.Minute;   如果(最后一分钟< curMinute){
         //你做一次,每分钟code在这里
         最后一分钟= curMinute;
   }   Thread.sleep代码(50000); //睡50秒   如果(这会破坏你出这个错误条件){
       打破; //离开循环结构
   }
}


解决方案

 类节目
{
    静态无效的主要(字串[] args)
    {
        定时器定时器=新定时器(新TimerCallback(TimeCallBack),空,1000,50000);
        Console.Read();
        timer.Dispose();
    }    公共静态无效TimeCallBack(对象o)
    {
      curMinute = DateTime.Now.Minute;
      如果(最后一分钟< curMinute){
       //你做一次,每分钟code在这里
       最后一分钟= curMinute;
    }
}

在code可能类似于像一个以上

I am running a windows service and using a loop and Thread.Sleep to repeat a task, would it be better to use a timer method?

If yes a code example would be great

I am currently using this code to repeat

int curMinute;
int lastMinute = DateTime.Now.AddMinutes(-1).Minute;

while (condition)
{
   curMinute = DateTime.Now.Minute;

   if (lastMinute < curMinute) {
         // do your once-per-minute code here
         lastMinute = curMinute;
   }

   Thread.Sleep(50000);      // sleeps for 50 seconds

   if (error condition that would break you out of this) {
       break;      // leaves looping structure
   }
}

解决方案

class Program
{
    static void Main(string[] args)
    {
        Timer timer = new Timer(new TimerCallback(TimeCallBack),null,1000,50000);
        Console.Read();
        timer.Dispose();
    }

    public static void TimeCallBack(object o)
    {
      curMinute = DateTime.Now.Minute;
      if (lastMinute < curMinute) {
       // do your once-per-minute code here
       lastMinute = curMinute;
    }
}

The code could resemble something like the one above

这篇关于C#定时器和Thread.sleep的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆