相关疑难解决方法(0)

CancellationTokenSource与Task循环退出的退出标志之间的区别

我想知道结束循环任务与CancellationTokenSource和退出标志之间是否有任何区别

CancellationTokenSource:

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;
}
Run Code Online (Sandbox Code Playgroud)

退出标志:

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;
} …
Run Code Online (Sandbox Code Playgroud)

.net c# task exit cancellationtokensource

10
推荐指数
1
解决办法
899
查看次数

标签 统计

.net ×1

c# ×1

cancellationtokensource ×1

exit ×1

task ×1