停止定时器Timer

时间:2020-12-24 23:26:53

[STAThread]
        static void Main(string[] args)
        {
            Program p = new Program();
            p.DB();
            System.Timers.Timer aTimer = new System.Timers.Timer();
            aTimer.Elapsed += new ElapsedEventHandler(TimeEvent);
            // 设置引发时间的时间间隔 此处设置为1秒(1000毫秒)
            aTimer.Interval = 1000;
            aTimer.Enabled = true;
            Console.ReadLine();
        }

   static void TimeEvent(object source, ElapsedEventArgs e)
        {
            // 得到 hour minute second  如果等于某个值就开始执行某个程序。
            int intMinute = e.SignalTime.Minute;
            int intSecond = e.SignalTime.Second;
            // 定制时间; 比如 在10:30 :00 的时候执行某个函数
            //int iHour = 10;
            int iMinute = 0;
            int iSecond = 0;
            //设置 每个小时的0分钟开始执行
            if (intMinute == iMinute && intSecond == iSecond)
            {
                Program p = new Program();
                p.DB();
            }
        }

如何在执行定时器的方法p.DB的时候 
如果出错 则停止定时器的运行 但是控制台应用程序不退出(因为我把错误输出到了控制台,我要查看 不能退出)

6 个解决方案

#1


加try catch finally保护,在finally里面停掉定时器,不过,这时需要定时器是全局的变量

#2


try
{
}
catch
{
输出到控制台
}

#3


 static void TimeEvent(object source, ElapsedEventArgs e)
        {
              System.Timers.Timer timer=source as System.Timers.Timer timer;
            // 得到 hour minute second  如果等于某个值就开始执行某个程序。
            int intMinute = e.SignalTime.Minute;
            int intSecond = e.SignalTime.Second;
            // 定制时间; 比如 在10:30 :00 的时候执行某个函数
            //int iHour = 10;
            int iMinute = 0;
            int iSecond = 0;
            //设置 每个小时的0分钟开始执行
            if (intMinute == iMinute && intSecond == iSecond)
            {
                Program p = new Program();
                try
                {
                     p.DB();
                }
                catch
                { timer.Stop(); }
               
            }
        }

#4


跟你学习了1

#5


stateTimer.Change(-1, 任意值);就可以停止

#6


[STAThread]
        static void Main(string[] args)
        {
            Program p = new Program();
            p.DB();
            System.Timers.Timer aTimer = new System.Timers.Timer();
            aTimer.Elapsed += new ElapsedEventHandler(TimeEvent);
            // 设置引发时间的时间间隔 此处设置为1秒(1000毫秒)
            aTimer.Interval = 1000;
            aTimer.Enabled = true;
            Console.ReadLine();
        }
 
   static void TimeEvent(object source, ElapsedEventArgs e)
        {
try{
            // 得到 hour minute second  如果等于某个值就开始执行某个程序。
            int intMinute = e.SignalTime.Minute;
            int intSecond = e.SignalTime.Second;
            // 定制时间; 比如 在10:30 :00 的时候执行某个函数
            //int iHour = 10;
            int iMinute = 0;
            int iSecond = 0;
            //设置 每个小时的0分钟开始执行
            if (intMinute == iMinute && intSecond == iSecond)
            {
                Program p = new Program();
                p.DB();
            }
}catch{ aTimer.Enabled = false;}
        }

#1


加try catch finally保护,在finally里面停掉定时器,不过,这时需要定时器是全局的变量

#2


try
{
}
catch
{
输出到控制台
}

#3


 static void TimeEvent(object source, ElapsedEventArgs e)
        {
              System.Timers.Timer timer=source as System.Timers.Timer timer;
            // 得到 hour minute second  如果等于某个值就开始执行某个程序。
            int intMinute = e.SignalTime.Minute;
            int intSecond = e.SignalTime.Second;
            // 定制时间; 比如 在10:30 :00 的时候执行某个函数
            //int iHour = 10;
            int iMinute = 0;
            int iSecond = 0;
            //设置 每个小时的0分钟开始执行
            if (intMinute == iMinute && intSecond == iSecond)
            {
                Program p = new Program();
                try
                {
                     p.DB();
                }
                catch
                { timer.Stop(); }
               
            }
        }

#4


跟你学习了1

#5


stateTimer.Change(-1, 任意值);就可以停止

#6


[STAThread]
        static void Main(string[] args)
        {
            Program p = new Program();
            p.DB();
            System.Timers.Timer aTimer = new System.Timers.Timer();
            aTimer.Elapsed += new ElapsedEventHandler(TimeEvent);
            // 设置引发时间的时间间隔 此处设置为1秒(1000毫秒)
            aTimer.Interval = 1000;
            aTimer.Enabled = true;
            Console.ReadLine();
        }
 
   static void TimeEvent(object source, ElapsedEventArgs e)
        {
try{
            // 得到 hour minute second  如果等于某个值就开始执行某个程序。
            int intMinute = e.SignalTime.Minute;
            int intSecond = e.SignalTime.Second;
            // 定制时间; 比如 在10:30 :00 的时候执行某个函数
            //int iHour = 10;
            int iMinute = 0;
            int iSecond = 0;
            //设置 每个小时的0分钟开始执行
            if (intMinute == iMinute && intSecond == iSecond)
            {
                Program p = new Program();
                p.DB();
            }
}catch{ aTimer.Enabled = false;}
        }