10
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;
}
종료 플래그 :
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;
}
저에게있어 CancellationTokenSource, btw를 사용하는 이유는 취소 토큰이 Task factory에 매개 변수로 추가 될 수있는 이유가 무엇입니까?
답장을 보내 주셔서 감사합니다.
최저 ragards 당신이 그것에 대해 생각하지 않아도, 필요한 모든 동기화를 처리하기 위해 토큰을 CancellationToken
을 허용 사용
TaskCancelation의 올바른 사용 예를 제공해 주시겠습니까? 그래서 작업 상태가 실행 중 변경됩니까? 그리고 새로운 방법으로 시작된 토큰을 어떻게 얻을 수 있습니까? – Teamol
@Teamol'Run','StartNew' 및'ContinueWith'는 모두 취소 토큰에 대한 매개 변수를 가지고 있습니다. 1 대 1로 전달하십시오. – Servy