TPL(Task Parallel Library)의 Task.Start()
, Task.Run()
, Task.Factory.StartNew()
사용법에 대한 자세한 설명
TPL(작업 병렬 라이브러리)은 Task.Start()
, Task.Run()
및 Task.Factory.StartNew()
을 포함하여 작업을 만들고 시작하는 다양한 방법을 제공합니다. 둘 다 비동기 작업을 수행하는 데 사용되지만 사용법에는 미묘한 차이가 있습니다.
Task.Start()
: 오래된 방법
Task.Start()
은 작업을 시작하기 전에 Task 객체를 명시적으로 생성해야 하는 오래된 접근 방식입니다. TaskCreationOptions
매개변수를 통해 추가 옵션을 지정할 수 있습니다. 하지만 대신 Task.Run()
, Task.Factory.StartNew()
을 사용하는 것이 좋습니다.
Task.Run()
: 단순화된 옵션
Task.Run()
은 기본 매개변수와 함께 Task.Factory.StartNew()
을 내부적으로 사용하는 단축 방법입니다. 사용자 지정 작업 옵션이 필요하지 않은 간단한 시나리오를 위해 설계되었습니다. Task.Start()
과 달리 시작하기 전에 Task 객체를 생성할 필요가 없습니다.
Task.Factory.StartNew()
: 다양한 선택 가능
Task.Factory.StartNew()
이 가장 일반적인 방법입니다. TaskScheduler
, CancellationToken
, TaskCreationOptions
지정 등 작업 생성을 사용자 정의하기 위한 옵션을 제공합니다. 이를 통해 작업 실행을 세밀하게 제어할 수 있습니다.
적절한 방법을 선택하세요
Task.Run()
을 사용하세요. TaskScheduler
를 사용하세요(예: Task.Factory.StartNew()
설정 또는 스레드 선호도 제어). Task.Start()
사용을 피해야 합니다. 사용예
다음 코드 조각은 이러한 메소드의 사용을 보여줍니다.
<code class="language-csharp">// Task.Start() var task = new Task(() => Console.WriteLine("Task started.")); task.Start(); // Task.Run() Task.Run(() => Console.WriteLine("Task started.")); // Task.Factory.StartNew() var task = Task.Factory.StartNew( () => Console.WriteLine("Task started."), TaskCreationOptions.PreferFairness);</code>
결론
Task.Start()
, Task.Run()
및 Task.Factory.StartNew()
의 기능은 유사하지만 애플리케이션의 특정 요구 사항에 따라 사용법을 결정해야 합니다. Task.Run()
은 가장 일반적인 시나리오에 적합한 반면 Task.Factory.StartNew()
은 고급 사용자 정의 옵션을 제공합니다. 더 이상 사용되지 않는 특성으로 인해 Task.Start()
사용은 일반적으로 권장되지 않습니다.
위 내용은 Task.Start(), Task.Run() 및 Task.Factory.StartNew(): 어떤 메서드를 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!