TPL 작업 중단/취소
멀티 스레드 프로그래밍에서 .Abort() 메서드를 사용하여 스레드가 종료되면 해당 스레드 내에서 생성된 작업이 계속 실행되어 예기치 않은 동작이 발생할 수 있습니다. 이 문서에서는 TPL(작업 병렬 라이브러리) 작업을 중단하거나 취소하는 올바른 방법을 설명합니다.
TPL 작업은 스레드 풀의 백그라운드 스레드에서 실행되며 직접 중단할 수 없습니다. 권장되는 접근 방식은 취소 태그를 사용하는 것입니다.
취소 마커는 작업 실행을 중지하라는 신호를 보내는 방법을 제공합니다. 이렇게 하려면:
다음 코드 예제에서는 이 접근 방식을 보여줍니다.
<code class="language-csharp">class Program { static void Main() { var cts = new CancellationTokenSource(); CancellationToken ct = cts.Token; Task.Factory.StartNew(() => { while (!ct.IsCancellationRequested) { // 执行一些繁重的工作 Thread.Sleep(100); // 检查取消请求 if (ct.IsCancellationRequested) { Console.WriteLine("任务已取消"); break; } } }, ct); // 模拟等待任务完成 3 秒 Thread.Sleep(3000); // 无法再等待 => 取消此任务 cts.Cancel(); Console.ReadLine(); } }</code>
이 수정된 예에서는 더 나은 가독성과 명확성을 위해 !ct.IsCancellationRequested
루프 조건에서 while
를 사용하여 루프 내에서 취소 요청을 직접 확인하며 핵심 기능은 동일하게 유지되어 작업 취소를 처리하는 깔끔하고 효율적인 방법을 제공합니다. .
위 내용은 C#에서 TPL 작업을 올바르게 중단하거나 취소하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!