alb*_*ert 18 .net multithreading
我想在两个操作之间放一个延迟而不保持线程忙
workA();
Thread.Sleep(1000);
workB();
Run Code Online (Sandbox Code Playgroud)
线程必须在workA之后退出,并在延迟一段时间后执行workB(可能在新线程中).
我想知道这个伪代码是否有可能出现
workA();
Thread.BeginSleep(1000, workB); // callback
Run Code Online (Sandbox Code Playgroud)
编辑我的程序在.NET 2.0中
编辑2:System.Timers.Timer.Elapsed事件将在1000毫秒后引发事件.我不知道计时器线程是否会忙碌1000毫秒.(所以我没有获得线程经济)
Mar*_*ell 39
你的意思是:
Task.Delay(1000).ContinueWith(t => workB());
Run Code Online (Sandbox Code Playgroud)
或者,Timer手动创建.
请注意,这在async代码中看起来更漂亮:
async Task Foo() {
workA();
await Task.Delay(1000);
workB();
}
Run Code Online (Sandbox Code Playgroud)
编辑:使用.NET 2.0更新,您必须Timer使用回调设置自己的.有一个nuget包System.Threading.Tasks将TaskAPI下载到.NET 3.5,但是:它不会转到2.0,而b:我不认为它包含Task.Delay.
| 归档时间: |
|
| 查看次数: |
10826 次 |
| 最近记录: |