按时间间隔调用实现异步任务

时间:2015-10-19 14:08:34

标签: c# asp.net asp.net-mvc-4 asynchronous thread-safety

我正在尝试实现一个工作流,该工作流涉及在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
}

我目前的实施是否正确?它会阻止当前线程吗? (我想避免)

1 个答案:

答案 0 :(得分:1)

Task.Delay内部使用计时器。它不会阻塞线程。