首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在启动新任务之前,请检查任务是否已在运行

在启动新任务之前,请检查任务是否已在运行
EN

Stack Overflow用户
提问于 2013-10-05 19:39:01
回答 4查看 40.3K关注 0票数 34

有一个在任务中执行的进程。我不希望同时执行其中的一个以上。

这是检查任务是否已在运行的正确方法吗?

代码语言:javascript
复制
private Task task;

public void StartTask()
{
    if (task != null && (task.Status == TaskStatus.Running || task.Status == TaskStatus.WaitingToRun || task.Status == TaskStatus.WaitingForActivation))
    {
        Logger.Log("Task has attempted to start while already running");
    }
    else
    {
        Logger.Log("Task has began");

        task = Task.Factory.StartNew(() =>
        {
            // Stuff                
        });
    }
}
EN

回答 4

Stack Overflow用户

发布于 2013-10-05 22:21:17

代码语言:javascript
复制
private Task task;

public void StartTask()
{
    if ((task != null) && (task.IsCompleted == false ||
                           task.Status == TaskStatus.Running ||
                           task.Status == TaskStatus.WaitingToRun ||
                           task.Status == TaskStatus.WaitingForActivation))
    {
        Logger.Log("Task is already running");
    }
    else
    {
        task = Task.Factory.StartNew(() =>
        {
            Logger.Log("Task has been started");
            // Do other things here               
        });
    }
}
票数 12
EN

Stack Overflow用户

发布于 2015-12-18 16:53:44

您可以使用以下命令进行检查:

代码语言:javascript
复制
if ((taskX == null) || (taskX.IsCompleted))
{
   // start Task
   taskX.Start();
   //or
   taskX = task.Factory.StartNew(() =>
   {
      //??
   }
}
票数 2
EN

Stack Overflow用户

发布于 2018-09-10 14:48:59

更简单:

代码语言:javascript
复制
if (task?.IsCompleted ?? true)
    task = TaskFunction();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19197376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档