C# 为什么计时器在windows服务中不工作?

C# 为什么计时器在windows服务中不工作?,c#,windows-services,C#,Windows Services,我知道这是一个已经被问过的问题,但我找不到任何解决办法。这是我的服务 class Program : ServiceBase { private Timer _timer; public Program() { ServiceName = "PrintTime"; } static void Main(string[] args) { Run(new Program()); } protecte

我知道这是一个已经被问过的问题,但我找不到任何解决办法。这是我的服务

class Program : ServiceBase
{
    private  Timer _timer;
    public Program()
    {
        ServiceName = "PrintTime";
    }

    static void Main(string[] args)
    {
        Run(new Program());
    }

    protected override void OnStart(string[] args)
    {
        base.OnStart(args);
        _timer = new Timer(5000);
        _timer.Elapsed += _timer_Elapsed;
        _timer.Start();
    }

    void _timer_Elapsed(object sender, ElapsedEventArgs e)
    {
        WriteTimeToFile();
    }

    protected override void OnStop()
    {
        _timer.Stop();
    }

    private void WriteTimeToFile()
    {
        using (FileStream fs = new FileStream(@"d:\mylog.txt", FileMode.Append,            FileAccess.ReadWrite))
        {
            StreamWriter streamWriter = new StreamWriter(fs);
            streamWriter.Write(DateTime.Now.ToShortTimeString());
            streamWriter.Close();
            fs.Close();
        }
    }

}
如您所见,我想每隔5秒将
currentTime
写入我的
Mylog.txt
文件,但即使2分钟后也不会发生任何事情。如果我将
WriteTimeToFile()
函数放入
OnStart
方法中,它可以正常工作,但不在计时器中


非常感谢您的帮助。

计时器的名称空间是什么?它需要是
System.Timers.Timer
System.Threading.Timer


请参见此处:

该服务必须在具有写入D:\目录权限的Windows帐户下运行

在事件查看器中检查异常,以查看是否存在未经授权的访问异常

另外,在_timer _appeased方法中放置一个断点,以验证是否调用了它,并逐步执行代码。

阅读我在这篇文章中的答案

也许你错过了
timer.AutoReset=true

好的,几个小时后,我注意到计时器工作正常。计时器没有问题。但问题在于
FileStream
构造函数
FileMode.Append
仅通过
FileAccess.Write
工作

因此,修复这行代码解决了问题

无论如何,谢谢你的关注

using (FileStream fs = new FileStream(@"d:\mylog.txt", 
                       FileMode.Append, FileAccess.Write))

通过从visual studio附加进程来调试您的服务。
已用
表示计时器。TimerIt是System.Timer.Timer。但我也试过System.Threading.Timer。同样的结果。我用工具箱插入了一个windows窗体计时器。有一次我用工具箱。。。谢谢你的提示!如果对d:\directory的写入被拒绝,那么为什么要将WriteTimeToFile()放入onStart方法中呢?