I want to put a delay between 2 operations without keeping busy the thread
workA(); Thread.Sleep(1000); workB();
The thread must exit after workA and execute workB (maybe in a new thread) after some delay.
I wonder if it's possible some equevalent of this pseudocode
workA(); Thread.BeginSleep(1000, workB); // callback
edit My program is in .NET 2.0
edit 2 : System.Timers.Timer.Elapsed event will raise the event after 1000 ms. I dont know if the timer thread will be busy for 1000 ms. (so I dont gain thread economy)
Thread. sleep() method can be used to pause the execution of current thread for specified time in milliseconds. The argument value for milliseconds can't be negative, else it throws IllegalArgumentException .
Use Thread. Sleep when you want to block the current thread. Use Task. Delay when you want a logical delay without blocking the current thread.
Thread. sleep is bad! It blocks the current thread and renders it unusable for further work.
Sleep method. Calling the Thread. Sleep method causes the current thread to immediately block for the number of milliseconds or the time interval you pass to the method, and yields the remainder of its time slice to another thread. Once that interval elapses, the sleeping thread resumes execution.
Do you mean:
Task.Delay(1000).ContinueWith(t => workB());
Alternatively, create a Timer
manually.
Note this looks prettier in async
code:
async Task Foo() { workA(); await Task.Delay(1000); workB(); }
edit: with your .NET 2.0 update, you would have to setup your own Timer
with callback. There is a nuget package System.Threading.Tasks that brings the Task
API down to .NET 3.5, but a: it doesn't go to 2.0, and b: I don't think it includes Task.Delay
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With