写入每X时间记录一次

时间:2011-11-16 09:19:29

标签: c# logging timer

我想使用System.IO

每隔3小时写一个日志

无论文件如何调用。真的,我怎么能每3个小时做一次呢?

5 个答案:

答案 0 :(得分:2)

使用计时器,将其间隔设置为3 * 60 * 60 * 1000,并在Tick事件中,执行您需要的操作。
请记住在表单或应用关闭之前停止计时器并删除处理程序...

public partial class Form1 : Form
{
    Timer timer = null;

    public Form1()
    {
        InitializeComponent();

        timer = new Timer();
        timer.Interval = 3 * 60 * 60 * 1000;
        timer.Tick += new EventHandler(timer_Tick);
        timer.Enabled = true;
    }

    void timer_Tick(object sender, EventArgs e)
    {
        // Do what you need
        File.AppendAllText(log_file, your_message);

    }

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        timer.Stop();
        timer.Tick -= timer_Tick;
    }
}

答案 1 :(得分:1)

为什么不使用Windows Task Scheduler,它可以使用您需要的预设间隔和参数启动每个任务,然后您只需输出日志所需的内容。

或者,您可以使用计时器对象设置服务并相应地设置计时器(计时器以毫秒为单位)。有关详细信息,请参阅this reply

答案 2 :(得分:0)

您是从正在运行的应用程序编写的,还是您的应用程序需要每3小时运行一次并执行日志?

如果是后者,我会使用内置在任务计划程序中的Windows。这就是它的用途。

答案 3 :(得分:0)

您可以使用Timer控件类来完成此操作。请参阅以下代码

System.Timers.Timer Auto_Timer = new System.Timers.Timer();

 Auto_Timer.Elapsed += new System.Timers.ElapsedEventHandler(Auto_Timer_Elapsed);
 Auto_Timer.Interval = (3*3600000); //3 hours time
 Auto_Timer.Enabled = true;

 void Auto_Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
 {
     writetolog(Message);
 }

答案 4 :(得分:0)

启动一个帖子,写下你的日志文件,睡10分钟直到3个小时过去了:重复!每次睡眠后做一次时间检查导致睡眠只保证你的线程不会运行x毫秒;它可能会睡得更久!