Why is the timer not working in windows service?
Solution 1
Ok, after several hours, I noticed that the timer works fine. There was nothing wrong with timer. But the problem is about FileStream
constructor. FileMode.Append
only works by FileAccess.Write
.
So fixing this line of code solved the problem .
Anyway, thanks for your attention.
using (FileStream fs = new FileStream(@"d:\mylog.txt",
FileMode.Append, FileAccess.Write))
Solution 2
What is the timer's namespace? It needs to be System.Timers.Timer
or System.Threading.Timer
.
See here: Best Timer for using in a Windows service
Related videos on Youtube
Mojtaba pirveisi
Updated on June 25, 2022Comments
-
Mojtaba pirveisi almost 2 years
I know this is an already asked question, but I couldn't find any solution. Here is my service.
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(); } } }
As you can see I want to write
currentTime
into myMylog.txt
file every 5 seconds, but nothing happens after even 2 minutes. If I put theWriteTimeToFile()
function intoOnStart
method it works fine, but not in a timer.Any help would be greatly appreciated.
-
AdilDebug your service by attaching the process from visual studio.
-
-
Mojtaba pirveisi over 11 yearsIf writing to d:\directory is denied , so why putting the WriteTimeToFile() into onStart method works ?