태스크 병렬 라이브러리에 BackgroundWorker 클래스를 대체하거나 개선 한 것으로 간주되는 것이 있습니까?
마법사 스타일의 UI가있는 WinForms 응용 프로그램이 있으며 몇 가지 장기 실행 작업을 수행합니다. 표준 진행률 표시 줄과 작업 취소 기능을 사용하여 반응 형 UI를 사용하고 싶습니다. 이전에 BackgroundWorker로이 작업을 수행했지만 대신 사용할 수있는 TPL 패턴이 있는지 궁금합니다.
태스크 병렬 라이브러리에 BackgroundWorker 클래스를 대체하거나 개선 한 것으로 간주되는 것이 있습니까?
마법사 스타일의 UI가있는 WinForms 응용 프로그램이 있으며 몇 가지 장기 실행 작업을 수행합니다. 표준 진행률 표시 줄과 작업 취소 기능을 사용하여 반응 형 UI를 사용하고 싶습니다. 이전에 BackgroundWorker로이 작업을 수행했지만 대신 사용할 수있는 TPL 패턴이 있는지 궁금합니다.
답변:
BackgroundWorker
진행률보고가 더 쉬우 며 Task
중첩 을 허용합니다. 두 가지 중에서 선호합니다 Task
( 중첩을 허용하는 것보다 진행률보고를 정리하는 것이 훨씬 쉽습니다). 하지만 둘 다 다른 일반적인 솔루션보다 광년 앞서 있습니다. 내가 사용하는 사람들의들을 때 나는 싫증이 나다 Thread
나 ThreadPool.QueueUserWorkItem
. 백그라운드 작업에 올바르게 사용하기 가장 어렵습니다.
userState
. 그러나 마지막 댓글 이후 2.5 년 동안 의 진행 상황 보다 더 깨끗하고 쉬운 및 Task
로 보완되었습니다 . 현대 코드에서는 더 이상 사용할 이유가 없습니다 . IProgress<T>
Progress<T>
BackgroundWorker
BackgroundWorker