我想在两个操作之间加一个延迟而不保持忙线
workA();
Thread.Sleep(1000);
workB();
线程必须在workA之后退出,并在延迟一段时间后执行workB(可能在新线程中)。
我想知道这个伪代码是否有可能出现这种伪代码
workA();
Thread.BeginSleep(1000, workB); // callback
编辑 我的程序在.NET 2.0中
编辑2: System.Timers.Timer.Elapsed事件将在1000毫秒后引发事件。我不知道计时器线程是否会忙碌1000毫秒。 (所以我没有获得线程经济)
答案 0 :(得分:36)
你的意思是:
Task.Delay(1000).ContinueWith(t => workB());
或者,手动创建Timer
。
请注意,这在async
代码中看起来更漂亮:
async Task Foo() {
workA();
await Task.Delay(1000);
workB();
}
编辑:使用.NET 2.0更新,您必须使用回调设置自己的Timer
。有一个nuget包System.Threading.Tasks将Task
API下载到.NET 3.5,但是:它不会转到2.0,而b:我不认为它包含{{1} }。