我想使用System.IO
无论文件如何调用。真的,我怎么能每3个小时做一次呢?
答案 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毫秒;它可能会睡得更久!