【问题标题】:c# check if task is runningc# 检查任务是否正在运行
【发布时间】:2012-11-11 19:03:35
【问题描述】:

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

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

所以在我的代码中另一个类的某处,我需要检查“GetTasksStatusAsync”是否正在运行。 谢谢

【问题讨论】:

    标签: asp.net .net c#-4.0 asp.net-mvc-4


    【解决方案1】:

    怎么样

    Task t = Task.Run(() => ...);
    
    if(t.Status.Equals(TaskStatus.Running))
    {
        //task is running
    }
    

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

    【讨论】:

    • 我认为这更完整:if (t.IsCompleted == false && t.Status != TaskStatus.Running && t.Status != TaskStatus.WaitingToRun && t.Status != TaskStatus.WaitingForActivation) 这可以防止在 if 块内重新启动(再次读取启动)。
    • 我必须在 equals 中使用大写的“E”,但这对我有用:t.Status.Equals(TaskStatus.Running)
    【解决方案2】:

    这对我有用。

    Task t = Task.Run(() => ...);
    
    if(t.IsCompleted.Equals(false))  // or if(t.Status.Equals(TaskStatus.WaitingForActivation)
    {
    }
    

    【讨论】:

      猜你喜欢
      • 2017-07-21
      • 1970-01-01
      • 2011-12-22
      • 1970-01-01
      • 1970-01-01
      • 2021-03-16
      • 2013-04-04
      • 2021-08-15
      • 2015-06-26
      相关资源
      最近更新 更多