Существует процесс, выполняемый в задаче. Я не хочу, чтобы один из них выполнялся одновременно.Проверьте, запущена ли задача перед запуском нового
Правильно ли это, чтобы проверить, запущена ли задача?
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
});
}
}
Рассмотрите возможность использования 'Task.IsCompleted' - но имейте в виду, что всегда будет состояние гонки здесь. Если задача завершена * просто * после проверки, вы не будете запускать ее в другой раз - это нормально? Или вы на самом деле хотите начать вторую задачу, как только закончите первый? –
А, я не видел 'Task.IsComplete'. Да, состояние гонки не является проблемой. Спасибо и не стесняйтесь создавать ответ. – davenewza
@ davenewza, вы можете проверить [шаблон для задачи самоотверждения и перезапуска] (http://stackoverflow.com/questions/18999827/a-pattern-for-self-cancelling-and-restarting-task) – Noseratio