实现按时间间隔召回的异步任务

本文关键字:异步 任务 召回 时间 实现 | 更新日期: 2023-09-27 18:18:31

我正试图实现一个工作流程,其中涉及等待任务在ASP中完成。净(c#)。

一个"任务"实际上是数据库中的一些元数据,当它完成时被更新。"监听应用程序"将是一个不断询问该任务以查看其是否已完成的应用程序。我这样做的原因是为了避免在两个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内部使用定时器。它不会阻塞线程