KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have a Windows Service application which uses a Threading.Timer and a TimerCallback to do some processing at particular intervals. I need to lock down this processing code to only 1 thread at a time. So for example, the service is started and the first callback is triggered and a thread is started and begins processing. This works ok as long as the processing is completed before the next callback. So say for instance the processing is taking a little longer than usual and the TimerCallback is triggered again whilst another thread is processing, I need to make that thread wait until the other thread is done. Here's a sample of my code: static Timer timer; static object locker = new object(); public void Start() { var callback = new TimerCallback(DoSomething); timer = new Timer(callback, null, 0, 10000); } public void DoSomething() { lock(locker) { // my processing code } } Is this a safe way of doing this? What happens if the queue gets quite substantial? Is there a better option?
Tags (comma-separated)
Save Edits
Cancel