So here's my problem, I need to do a c# service running on a server who's getting file on ftp one time per day at 3am. I think that I can do it with a thread.sleep() or by compare the DateTime.Now with 3am....
Do you have better solution?
Thank you very much for your help!
If you are expecting a file every night, instead of worrying about when it arrives, just get an event fired when it does.
Look at:
System.IO.FileSystemWatcher
File System Watcher on MSDN
Write a console app or equivalent, and use the Windows Scheduler (or whatever it's called nowadays...) to run it daily.
System.Threading.Timer
might work out for you.Documented here
Much better solution, let windows do it for you using Scheduled Tasks.
If it only needs to be executed once a day, then I would go for this. Even Google does it ;)
EDIT:
To answer the comment, it is as Fredrik has said. It is an Advanced Option, which you can open as the task is set up, containing a checkbox called: "
Run only if logged on
", which is false to begin with.For a flexible solution, you could use this. It's not a Windows service, but you could easily incorporate it into one. Or you might consider Quartz.NET which is reputed to be industrial strength (the Java version certainly is).
Why not set this up to run as a scheduled task. Have it execute and then exit. Set up Windows to start the process as a scheduled task at 3:00 AM daily.