Diferença entre CancellationTokenSource e sinalizador de saída para saída do loop de tarefas
Eu queria saber se há alguma diferença entre terminar a tarefa de loop com CancellationTokenSource e sinalizador de saída
Cancelamento de passagem
CancellationTokenSource cancellationTokenSource;
Task loopTask;
void StartLoop()
{
cancellationTokenSource = new CancellationTokenSource();
loopTask = Task.Factory.StartNew(Loop, TaskCreationOptions.LongRunning);
}
void Loop()
{
while (true)
{
if (cancellationTokenSource.IsCancellationRequested)
break;
Thread.Yield();
}
}
void StopLoop()
{
cancellationTokenSource.Cancel();
loopTask = null;
cancellationTokenSource = null;
}
Sinalizador de saída:
volatile bool exitLoop;
Task loopTask;
void StartLoop()
{
exitLoop = false;
loopTask = Task.Factory.StartNew(Loop, TaskCreationOptions.LongRunning);
}
void Loop()
{
while (true)
{
if (exitLoop)
break;
Thread.Yield();
}
}
void StopLoop()
{
exitLoop = true;
loopTask = null;
}
Para mim, não faz nenhuma diferença usar o CancellationTokenSource, mas existe algum motivo pelo qual o token de cancelamento possa ser adicionado como parâmetro à fábrica de tarefas?
Muito obrigado por qualquer tipo de resposta.
Melhores ragards teamol