C#检查任务是否正在运行

Sha*_*eKm 4 .net asp.net c#-4.0 asp.net-mvc-4

我需要能够检查特定任务是否正在运行:

            Task.Run(() =>
                {
                    int counter = 720;
                    int sleepTime = 7000;
                    int operationId = 0;
                    Thread.CurrentThread.Name = "GetTasksStatusAsync";
......
Run Code Online (Sandbox Code Playgroud)

因此在我的代码中另一个类的某个地方,我需要检查“ GetTasksStatusAsync”是否正在运行。谢谢

Bas*_*i M 5

怎么样

Task t = Task.Run(() => ...);

if(t.Status.Equals(TaskStatus.Running))
{
    //task is running
}
Run Code Online (Sandbox Code Playgroud)

基本上,我会将我的任务存储在某个地方,并使其他类可以访问它们。然后,您可以使用上面的代码检查任务的状态。请参阅TaskStatus-Documentation

  • 我认为这更完整: `if (t.IsCompleted == false && t.Status != TaskStatus.Running && t.Status != TaskStatus.WaitingToRun && t.Status != TaskStatus.WaitingForActivation)` 这可以防止重新启动(读取再次开始)在 if 块内重新开始。 (3认同)

小智 5

这对我有用。

Task t = Task.Run(() => ...);

if(t.IsCompleted.Equals(false))  // or if(t.Status.Equals(TaskStatus.WaitingForActivation)
{
}
Run Code Online (Sandbox Code Playgroud)