Reputation: 1571
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)
Upvotes: 40
Views: 24033
Reputation: 1064014
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
.
Upvotes: 68