TPL 작업을 폐기하지 않음: 결과 및 대체 솔루션
작업이 완료될 때까지 기다리지 않고 백그라운드에서 실행되도록 트리거할 때 일반적인 Task.Factory.StartNew()를 사용하면 반환된 Task 개체에 대해 Dispose()를 호출해야 하는지에 대한 질문이 제기됩니다. MSDN에서는 모든 작업을 폐기할 것을 권장하지만 이 특정 시나리오에서 작업 폐기 문제는 간과되는 경우가 많습니다.
삭제하지 않은 결과에 대해 Microsoft PFX 팀원인 Stephen Toub는 다음과 같이 설명합니다. Task.Dispose()는 특정 대기 시나리오에서 사용되는 이벤트 핸들을 처리하기 위해 존재합니다. 그러나 연속 작업이 작업에 액세스하는 기본 수단인 경우 이 이벤트 핸들은 할당되지 않습니다. Stephen Toub는 마무리 작업을 통해 이러한 작업을 관리할 것을 제안합니다. 이 주제에 대한
공식 문서는 제한되어 있습니다. 그러나 Stephen Toub의 블로그 게시물 "작업을 처리해야 합니까?"에서는 이 문제를 자세히 설명하고 .Net 4.5에 도입된 개선 사항을 강조합니다.
일반적으로 작업을 처리할 필요가 없습니다. 처리해야 하는 이유에는 관리되지 않는 리소스를 즉시 해제하고 종료자 비용을 방지하는 것이 포함됩니다. 그러나 이러한 고려 사항은 일반적으로 작업 개체에 적용되지 않습니다.
TPL을 사용한 실행 후 잊어버리는 작업을 위한 대체 방법:
작업 객체 폐기가 여전히 문제인 경우 대체 접근 방식이 있습니다.
위 내용은 Fire-and-Forget TPL 작업을 폐기해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!