Share via


작업 팩터리

작업 팩터리는 Task 개체를 만드는 System.Threading.Tasks.TaskFactory 클래스 또는 Task<TResult> 개체를 만드는 System.Threading.Tasks.TaskFactory<TResult> 클래스로 표현됩니다. 두 클래스에 포함된 메서드는 다음을 수행하는 데 사용할 수 있습니다.

Task 클래스에는 기본 TaskFactory를 나타내는 정적 속성이 있습니다. 일반적으로 TaskFactory 메서드는 다음 예제와 같이 Factory 속성을 사용하여 호출됩니다.

[Visual Basic]

Dim taskA as Task = Task.Factory.StartNew(Sub( ...))

[C#]

Task taskA = Task.Factory.StartNew( () => ...);

대부분의 시나리오에서는 새 클래스를 TaskFactory에서 파생시킬 필요가 없습니다. 그러나 새 TaskFactory를 구성한 다음 이를 사용하여 특정 옵션을 지정하거나 작업을 사용자 지정 스케줄러와 연결하는 것이 유용한 경우도 있습니다. 다음 예제에서는 지정된 TaskScheduler를 사용하고 지정된 TaskCreationOptions 옵션이 있는 작업을 만드는 새 TaskFactory의 구성 방법을 보여 줍니다.

Class Program
    Shared Sub Main()
        Dim cts As CancellationTokenSource = New CancellationTokenSource()
        Dim _factory As TaskFactory = New TaskFactory(
                                        cts.Token,
                                        TaskCreationOptions.PreferFairness,
                                        TaskContinuationOptions.ExecuteSynchronously,
                                        New MyScheduler())

        Dim t2 = _factory.StartNew(Sub() DoWork())
    End Sub
    Shared Sub DoWork()
        ' ...
    End Sub
class Program
{
    static CancellationTokenSource cts = new CancellationTokenSource();
    private static TaskFactory _factory = new TaskFactory(
                                        cts.Token,
                                        TaskCreationOptions.PreferFairness,
                                        TaskContinuationOptions.ExecuteSynchronously,
                                        new MyScheduler());

    static void Main(string[] args)
    {
        var t2 = _factory.StartNew(() => DoWork());            
    }

    static void DoWork() {/*...*/ }
}

참고 항목

개념

.NET Framework의 병렬 프로그래밍