📅  最后修改于: 2023-12-03 14:59:43.963000             🧑  作者: Mango
当使用C#的Task.Run方法启动一个异步操作时,我们可能需要在循环内等待其完成。本文将介绍如何通过Task的状态判断Task.Run是否完成。
Task有以下几种状态:
可以通过Task.Status属性判断Task是否完成。以下代码段演示了如何等待Task完成,直到其状态为RanToCompletion。
Task task = Task.Run(() =>
{
// 异步操作
});
while (task.Status != TaskStatus.RanToCompletion)
{
// 循环等待Task完成
}
// Task已经完成
注意,以上代码中的while循环会一直占用一个线程,如果手动循环等待Task完成可能会导致CPU占用率过高。因此,我们也可以使用async/await等待Task完成,这样就可以将控制权交还给操作系统,减少CPU占用率。以下代码段演示了如何使用async/await等待Task完成:
async Task MyMethod()
{
await Task.Run(() =>
{
// 异步操作
});
}
await MyMethod();
// Task已经完成
在C#中,我们可以使用Task的状态判断Task是否完成。循环等待Task完成可能会导致CPU占用率过高,建议使用async/await等待Task完成。