我正在尝试实现一个工作流,该工作流涉及在ASP.NET(C#)中等待任务完成。
A"任务"实际上是DB中的一些元数据,在完成后会更新。 A"听众 - 应用"将是一个不断询问该任务以查看它是否已完成的应用程序。我这样做的原因是为了避免在2个WEB API之间保持开放连接以进行耗时的操作。
我的问题是哪种方法可以做到这一点?
我目前的实施:
bool isDone = false;
while (isDone == false)
{
await Task.Delay(5000);
//check if task is done
//if it is done, the flow will exit this "while" code block
}
我丢弃的先前实现,因为据我所知,不必要地阻塞线程:
bool isDone = false;
while (isDone == false)
{
System.Threading.Thread.Sleep(5000);
//check if task is done
//if it is done, the flow will exit this "while" code block
}
我目前的实施是否正确?它会阻止当前线程吗? (我想避免)
答案 0 :(得分:1)
Task.Delay
内部使用计时器。它不会阻塞线程。