首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >异步Thread.Sleep()

异步Thread.Sleep()
EN

Stack Overflow用户
提问于 2013-04-10 19:11:17
回答 1查看 16.5K关注 0票数 31

我想在两个操作之间设置一个延迟,而不让线程保持忙碌

代码语言:javascript
复制
 workA();
 Thread.Sleep(1000);
 workB();

线程必须在workA之后退出,并在一段延迟后执行workB (可能在新线程中)。

我想知道这个伪代码有没有可能

代码语言:javascript
复制
workA();
Thread.BeginSleep(1000, workB); // callback

在.NET 2.0中编辑我的程序

编辑2: System.Timers.Timer.Elapsed事件将在1000毫秒后引发事件。我不知道计时器线程是否会忙1000毫秒。(所以我不会获得线程经济)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-10 19:12:26

你的意思是:

代码语言:javascript
复制
Task.Delay(1000).ContinueWith(t => workB());

或者,手动创建Timer

注意:这在async代码中看起来更漂亮:

代码语言:javascript
复制
async Task Foo() {
    workA();
    await Task.Delay(1000);
    workB();
}

编辑:在你的.NET 2.0更新中,你必须设置你自己的带有回调的Timer。有一个nuget包System.Threading.Tasks可以将Task应用编程接口降低到.NET 3.5,但是a:它没有到2.0,b:我认为它不包括Task.Delay

票数 54
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15924221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档