【问题标题】:Using async and await with System.Threading.Thread.Sleep将 async 和 await 与 System.Threading.Thread.Sleep 一起使用
【发布时间】:2012-10-14 16:42:45
【问题描述】:

我开始使用 .NET4.5 进行异步和等待。所有示例似乎都使用以下内容来模拟长期操作:

await Task.Delay(3000);

现在我的长期计算非常类似于:

System.Threading.Thread.Sleep(3000)

例如:

for(i=0;i<1000000000;i++)
    i=i*2;

如何使用 async 和 await 进行这项工作?现在看来,我可以“只”使用 webrequests、WCF 等方法......用这个很棒的新方法。

我哪里漏掉了重点?

【问题讨论】:

  • “我的长期计算真的和Thread.Sleep很像”是什么意思?我无法想象他们真的睡着了。
  • 不,我的意思是,它们是阻塞的,就像 for 循环一样?我基本上试图实现的是等待很长的 for 循环。
  • 也许最好说持续时间可以使用 .Sleep(3000) 函数来近似,而不是说你的计算真的很相似?

标签: .net asynchronous async-await


【解决方案1】:
await Task.Run(() => Thread.Sleep(10000))

会起作用,但它相当没有意义

【讨论】:

  • 是的,但这正是我所需要的。我可以用阻塞函数替换 Thread.Sleep 并且它可以工作!!谢谢,这似乎是一个愚蠢的问题,但它对我有帮助。
  • 你说这毫无意义,这对我通常会阻塞的异步函数没有帮助。如果你粗暴地这样做,你的线程可以关闭并做其他工作。我专门说在 IIS 中运行。
猜你喜欢
  • 2018-09-03
  • 1970-01-01
  • 2018-11-21
  • 2017-11-05
  • 2019-04-15
  • 2014-06-19
  • 2018-01-14
  • 2018-09-12
  • 1970-01-01
相关资源
最近更新 更多