C# 异步执行中的同步睡眠?

C# 异步执行中的同步睡眠?,c#,asynchronous,C#,Asynchronous,有没有一种方法可以在一个异步执行的函数中创建一种休眠方式来模拟thread.sleep 比如我有 Workthread run() { while (true) { //All calls cannot pause inside, async CallWorkFunction(); CallOtherWorkFuctuion(); Callthirdworkfunction(); thread.sleep(0x10); curtick++; } } //CallWor

有没有一种方法可以在一个异步执行的函数中创建一种休眠方式来模拟thread.sleep

比如我有

 Workthread run()
 {
 while (true)
 {
 //All calls cannot pause inside, async
 CallWorkFunction();
 CallOtherWorkFuctuion();
 Callthirdworkfunction();
 thread.sleep(0x10);
  curtick++;
 }
 }

//CallWorkFunction()

if (nexttick - curtick > 0)
   return;
foreach (var item in collection.ToList())
{
   if (!item.IsReady)
       continue;
   collection.Remove(item);
   ProcessItem(item);
   nexttick = curtick + 20;
   return;
}
如果
nexttick
可以像线程
thread.Sleep()
一样工作,而不停止执行,则此函数的工作效果会更好。由于异步代码有一系列基于状态的检查,其中许多可以用正确的暂停来代替。

尝试这样做:

async Workthread run()
{
    while (true)
    {
     //All calls cannot pause inside, async
     CallWorkFunction();
     CallOtherWorkFuctuion();
     Callthirdworkfunction();

     await Task.Delay(0x10);

     curtick++;
    }
}

您正在尝试每16毫秒轮询一次吗?您的
run()
方法看起来应该是一个计时器,而不是一个睡眠循环。想想看,整件事似乎都应该有个计时器。但是,如果没有更多的上下文,很难确定。如果您使用的是async/await,那么您可以等待
Task.Delay