c# Timer编程出错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# Timer编程出错相关的知识,希望对你有一定的参考价值。

using System;
using System.Collections.Generic;
using System.Text;
using System.Timers;
using System.Diagnostics;

namespace TestSender

class Program

static System.Timers.Timer timer;

static void Main(string[] args)

double interval = 600000;
timer = new Timer();
timer.Elapsed += new ElapsedEventHandler(TimerEvent);
timer.Enabled = true;


private static void TimerEvent(object sender, ElapsedEventArgs arg)

Console.WriteLine("haha");


根本就不执行,为什么?

参考技术A 不执行的原因为Timer相当一个子线程。你的主线程(姑且叫Main线程)的一个分支,当你的Main线程结束后你的Timer子线程也就结束了。所以要是你的子线程能够执行必须不能使你的Main线程结束.

你吧Main函数里的代码改为下面的代码试试看
timer=new Timer();
timer.Interval=600000; //timer执行的时间间隔
timer.Elapsed += new ElapsedEventHandler(TimerEvent);
timer.Enabled = true;
timer.Start();
System.Threading.Thread.Sleep(0); //挂起此线程
参考技术B 你的程序执行到 timer.Enabled = true;
main函数就结束了,程序就执行完了,退出了。

timer还没机会触发就退出了。本回答被提问者采纳
参考技术C double interval = 600000;
这句改到timer = new Timer();后面吧
timer.Interval=600000;
或者timer = new Timer(interval);
在main函数的最后要加上Console.ReadKey();
参考技术D using System;
using System.Collections.Generic;
using System.Text;
using System.Timers;
using System.Diagnostics;

namespace TestSender

class Program

static System.Timers.Timer timer;

static void Main(string[] args)

double interval = 600000;
timer = new Timer();
timer.Elapsed += new ElapsedEventHandler(TimerEvent);
timer.Enabled = true;
Console.ReadKey();


private static void TimerEvent(object sender, ElapsedEventArgs arg)

Console.WriteLine("haha");


第5个回答  2009-08-26 是不是你的时间太长了,还有你 interval是Timer对象的属性
你这样写timer.Interval=600000;

以上是关于c# Timer编程出错的主要内容,如果未能解决你的问题,请参考以下文章

C# Timer-Filter 命令

C#混合R语言编程之RDotNet-基础

解读C#编程中最容易忽略7种编写习惯!

Java并发编程:Timer和TimerTask

Java并发编程(十五):Timer和TimerTask(转载)

R语言编程中的常见错误