实现按时间间隔调用的异步任务
我试图实现一个涉及等待任务在ASP.NET(C#)中完成的工作流。实现按时间间隔调用的异步任务
“任务”实际上是一个数据库中的一些元数据,它在完成时被更新。 “侦听器应用程序”将会是一个应用程序,持续询问该任务是否已完成。我这样做的原因是为了避免在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
}
是我目前的执行是否正确?它会阻止当前线程吗? (我想避免)
Task.Delay
内部使用计时器。它不会阻塞线程。
如果我有很多线程同时执行约120通过“WHILE”块将我有一个Web Api的问题? –
@PrisecaruAlin尝试一下,找出自己。 – Servy
@PrisecaruAlin很难说没有尝试过。如果您的web api无法处理负载,则可以将结果缓存几秒钟。但是当你还不确定它存在的时候,不要试图解决这个问题。 –
一般情况下,如果你不想等待更长的函数执行,你可以创建不同部分的函数,将其称为异步方式并定义回调方法 –