TaskFactory<TResult> 클래스

정의

Task<TResult> 개체를 만들고 예약하도록 지원합니다.Provides support for creating and scheduling Task<TResult> objects.

generic <typename TResult>
public ref class TaskFactory
public class TaskFactory<TResult>
type TaskFactory<'Result> = class
Public Class TaskFactory(Of TResult)

형식 매개 변수

TResult

이 클래스의 메서드로 만든 Task<TResult> 개체의 반환 값입니다.The return value of the Task<TResult> objects that the methods of this class create.

상속
TaskFactory<TResult>

예제

다음 예제에서는 정적 Factory 속성에 대 한 두 호출을는 TaskFactory<TResult>.StartNew 메서드.The following example uses the static Factory property to make two calls to the TaskFactory<TResult>.StartNew method. 첫 번째 작업에는 두 번째 사용자의 내 문서 디렉터리의 하위 디렉터리의 이름으로 채워지는 문자열 배열을 반환 하는 동안 사용자의 내 문서 디렉터리의 파일 이름으로 채워지는 문자열 배열을 반환 합니다.The first task returns a string array that is populated with the names of files in the user's MyDocuments directory, while the second returns a string array that is populated with the names of subdirectories of the user's MyDocuments directory. 그런 다음 호출 하는 TaskFactory.ContinueWhenAll(Task[], Action<Task[]>) 실행 완료 된 후 두 작업에서 반환 된 배열에 있는 파일 및 디렉터리의 수에 대 한 정보를 표시 하는 메서드.It then calls the TaskFactory.ContinueWhenAll(Task[], Action<Task[]>) method, which displays information about the number of files and directories in the arrays returned by the two tasks after they have completed execution.

using System;
using System.IO;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      Task<string[]>[] tasks = new Task<string[]>[2];
      String docsDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

      tasks[0] = Task<string[]>.Factory.StartNew( () => Directory.GetFiles(docsDirectory));
      tasks[1] = Task<string[]>.Factory.StartNew( () => Directory.GetDirectories(docsDirectory));

      Task.Factory.ContinueWhenAll(tasks, completedTasks => {
                                             Console.WriteLine("{0} contains: ", docsDirectory);
                                             Console.WriteLine("   {0} subdirectories", tasks[1].Result.Length);
                                             Console.WriteLine("   {0} files", tasks[0].Result.Length);
                                          } );
   }
}
// The example displays output like the following:
//       C:\Users\<username>\Documents contains:
//          24 subdirectories
//          16 files
Imports System.IO
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim tasks(1) As Task(Of String())
      Dim docsDirectory As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
      
      tasks(0) = Task(Of String()).Factory.StartNew( Function()Directory.GetFiles(docsDirectory) )
''                                        End Sub )
      tasks(1) = Task(Of String()).Factory.StartNew( Function() Directory.GetDirectories(docsDirectory) )
''                                        End Sub )
      Task.Factory.ContinueWhenAll(tasks, Sub(completedTasks)
                                             Console.WriteLine("{0} contains: ", docsDirectory)
                                             Console.WriteLine("   {0} subdirectories", tasks(1).Result.Length)
                                             Console.WriteLine("   {0} files", tasks(0).Result.Length)
                                          End Sub)
   End Sub
End Module
' The example displays output like the following:
'       C:\Users\<username>\Documents contains:
'          24 subdirectories
'          16 files

설명

.NET Framework는 만들기 및 작업 예약에 대 한 두 팩터리를 제공 합니다.The .NET Framework provides two factories for creating and scheduling tasks:

TaskFactory<TResult> 클래스를 사용 하면 다음을 수행할 수 있습니다.The TaskFactory<TResult> class allows you to do the following:

  • 작업을 만들고 호출 하 여 즉시 시작 합니다 StartNew 메서드.Create a task and start it immediately by calling the StartNew method. 만들고 기본이 아닌 인수를 필요로 하는 작업 실행이 메서드의 오버 로드를 호출할 수 있습니다.You can call the overloads of this method to create and execute a task that requires non-default arguments.

    경고

    로 시작 합니다 .NET Framework 4.5.NET Framework 4.5, Task.Run 메서드는 구성 값 이며 기본값은 태스크를 만드는 즉시 시작 하는 가장 쉬운 방법은 제공 합니다.Starting with the .NET Framework 4.5.NET Framework 4.5, the Task.Run method provides the easiest way to create a task with default configuration values and start it immediately.

  • 배열에서 작업 중 하나를 호출 하 여 완료 될 때 시작 되는 작업을 만들 합니다 ContinueWhenAny 또는 ContinueWhenAny 메서드.Create a task that starts when any one of the tasks in an array has completed by calling the ContinueWhenAny or ContinueWhenAny method.

  • 호출 하 여 배열에는 모든 작업이 완료 될 때 시작 되는 작업 만들기를 ContinueWhenAll 또는 ContinueWhenAll 메서드.Create a task that starts when all the tasks in an array have completed by calling the ContinueWhenAll or ContinueWhenAll method.

정적 Task<TResult>.Factory 속성을 기본 반환 TaskFactory<TResult> 개체입니다.The static Task<TResult>.Factory property returns a default TaskFactory<TResult> object. 중 하나를 호출할 수도 있습니다는 TaskFactory<TResult> 클래스 생성자를 구성 하는 Task<TResult> 개체는 TaskFactory<TResult> 클래스를 만듭니다.You can also call one of the TaskFactory<TResult> class constructors to configure the Task<TResult> objects that the TaskFactory<TResult> class creates. 다음 예제에서는 새 구성 TaskFactory<TResult> 지정 된 취소 토큰, 작업 생성 옵션, 연속 옵션 및 사용자 지정된 작업 스케줄러는 작업을 만드는 개체입니다.The following example configures a new TaskFactory<TResult> object to create tasks that have a specified cancellation token, task creation options, continuation options, and a customized task scheduler.

using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;

public class Example
{
   static CancellationTokenSource cts = new CancellationTokenSource();

   static TaskFactory<int> factory = new TaskFactory<int>(
      cts.Token,
      TaskCreationOptions.PreferFairness,
      TaskContinuationOptions.ExecuteSynchronously,
      new CustomScheduler());

   static void Main()
   {
      var t2 = factory.StartNew(() => DoWork());
      cts.Dispose();
   }

   static int DoWork()
   {
       /*...*/
       return DateTime.Now.Hour <= 12 ?  1 : 2;
    }
}
Imports System.Collections.Generic
Imports System.Threading
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim cts As New CancellationTokenSource()
      Dim factory As New TaskFactory(Of Integer)(
                         cts.Token,
                         TaskCreationOptions.PreferFairness,
                         TaskContinuationOptions.ExecuteSynchronously,
                         New CustomScheduler())

      Dim t2 = factory.StartNew(Function() DoWork())
      cts.Dispose()
   End Sub

   Function DoWork() As Integer
      Return If(Date.Now.Hour <= 12, 1, 2)
   End Function
End Module

대부분의 경우에서 수행 하면 새 TaskFactory<TResult> 인스턴스.In most cases, you do not have to instantiate a new TaskFactory<TResult> instance. 대신 정적을 사용할 수 있습니다 Task<TResult>.Factory 기본값을 사용 하는 팩터리 개체를 반환 하는 속성입니다.Instead, you can use the static Task<TResult>.Factory property, which returns a factory object that uses default values. 새 작업을 시작 하거나 작업 연속을 정의 하려면 해당 메서드를 호출할 수 있습니다.You can then call its methods to start new tasks or define task continuations. 예시의 경우에 대 한 예제를 참조 하세요.For an illustration, see the example.

생성자

TaskFactory<TResult>()

기본 구성을 사용하여 TaskFactory<TResult> 인스턴스를 초기화합니다.Initializes a TaskFactory<TResult> instance with the default configuration.

TaskFactory<TResult>(CancellationToken)

기본 구성을 사용하여 TaskFactory<TResult> 인스턴스를 초기화합니다.Initializes a TaskFactory<TResult> instance with the default configuration.

TaskFactory<TResult>(CancellationToken, TaskCreationOptions, TaskContinuationOptions, TaskScheduler)

지정된 구성을 사용하여 TaskFactory<TResult> 인스턴스를 초기화합니다.Initializes a TaskFactory<TResult> instance with the specified configuration.

TaskFactory<TResult>(TaskCreationOptions, TaskContinuationOptions)

지정된 구성을 사용하여 TaskFactory<TResult> 인스턴스를 초기화합니다.Initializes a TaskFactory<TResult> instance with the specified configuration.

TaskFactory<TResult>(TaskScheduler)

지정된 구성을 사용하여 TaskFactory<TResult> 인스턴스를 초기화합니다.Initializes a TaskFactory<TResult> instance with the specified configuration.

속성

CancellationToken

이 작업 팩터리에 대한 기본 취소 토큰을 가져옵니다.Gets the default cancellation token for this task factory.

ContinuationOptions

이 작업 팩터리에 대한 TaskContinuationOptions 열거형 값을 가져옵니다.Gets the TaskContinuationOptions enumeration value for this task factory.

CreationOptions

이 작업 팩터리에 대한 TaskCreationOptions 열거형 값을 가져옵니다.Gets the TaskCreationOptions enumeration value for this task factory.

Scheduler

이 작업 팩터리에 대한 작업 스케줄러를 가져옵니다.Gets the task scheduler for this task factory.

메서드

ContinueWhenAll(Task[], Func<Task[],TResult>)

제공된 작업 집합이 완료될 때 시작할 연속 작업을 만듭니다.Creates a continuation task that will be started upon the completion of a set of provided tasks.

ContinueWhenAll(Task[], Func<Task[],TResult>, CancellationToken)

제공된 작업 집합이 완료될 때 시작할 연속 작업을 만듭니다.Creates a continuation task that will be started upon the completion of a set of provided tasks.

ContinueWhenAll(Task[], Func<Task[],TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

제공된 작업 집합이 완료될 때 시작할 연속 작업을 만듭니다.Creates a continuation task that will be started upon the completion of a set of provided Tasks.

ContinueWhenAll(Task[], Func<Task[],TResult>, TaskContinuationOptions)

제공된 작업 집합이 완료될 때 시작할 연속 작업을 만듭니다.Creates a continuation task that will be started upon the completion of a set of provided Tasks.

ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>)

제공된 작업 집합이 완료될 때 시작할 연속 작업을 만듭니다.Creates a continuation task that will be started upon the completion of a set of provided tasks.

ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>, CancellationToken)

제공된 작업 집합이 완료될 때 시작할 연속 작업을 만듭니다.Creates a continuation task that will be started upon the completion of a set of provided tasks.

ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

제공된 작업 집합이 완료될 때 시작할 연속 작업을 만듭니다.Creates a continuation task that will be started upon the completion of a set of provided tasks.

ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>, TaskContinuationOptions)

제공된 작업 집합이 완료될 때 시작할 연속 작업을 만듭니다.Creates a continuation task that will be started upon the completion of a set of provided tasks.

ContinueWhenAny(Task[], Func<Task,TResult>)

제공된 집합에서 모든 작업이 완료될 때 시작할 연속 작업을 만듭니다.Creates a continuation task that will be started upon the completion of any task in the provided set.

ContinueWhenAny(Task[], Func<Task,TResult>, CancellationToken)

제공된 집합에서 모든 작업이 완료될 때 시작할 연속 작업을 만듭니다.Creates a continuation task that will be started upon the completion of any task in the provided set.

ContinueWhenAny(Task[], Func<Task,TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

제공된 집합에서 모든 작업이 완료될 때 시작할 연속 작업을 만듭니다.Creates a continuation task that will be started upon the completion of any task in the provided set.

ContinueWhenAny(Task[], Func<Task,TResult>, TaskContinuationOptions)

제공된 집합에서 모든 작업이 완료될 때 시작할 연속 작업을 만듭니다.Creates a continuation task that will be started upon the completion of any task in the provided set.

ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>)

제공된 집합에서 모든 작업이 완료될 때 시작할 연속 작업을 만듭니다.Creates a continuation task that will be started upon the completion of any task in the provided set.

ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>, CancellationToken)

제공된 집합에서 모든 작업이 완료될 때 시작할 연속 작업을 만듭니다.Creates a continuation task that will be started upon the completion of any task in the provided set.

ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

제공된 집합에서 모든 작업이 완료될 때 시작할 연속 작업을 만듭니다.Creates a continuation task that will be started upon the completion of any task in the provided set.

ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>, TaskContinuationOptions)

제공된 집합에서 모든 작업이 완료될 때 시작할 연속 작업을 만듭니다.Creates a continuation task that will be started upon the completion of any task in the provided set.

Equals(Object)

지정한 개체와 현재 개체가 같은지 여부를 확인합니다.Determines whether the specified object is equal to the current object.

(다음에서 상속됨 Object)
FromAsync(Func<AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, Object)

비동기 프로그래밍 모델 패턴을 따르는 Begin 및 End 메서드 쌍을 나타내는 작업을 만듭니다.Creates a task that represents a pair of begin and end methods that conform to the Asynchronous Programming Model pattern.

FromAsync(Func<AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, Object, TaskCreationOptions)

비동기 프로그래밍 모델 패턴을 따르는 Begin 및 End 메서드 쌍을 나타내는 작업을 만듭니다.Creates a task that represents a pair of begin and end methods that conform to the Asynchronous Programming Model pattern.

FromAsync(IAsyncResult, Func<IAsyncResult,TResult>)

지정된 IAsyncResult가 완료될 때 End 메서드 함수를 실행하는 작업을 만듭니다.Creates a task that executes an end method function when a specified IAsyncResult completes.

FromAsync(IAsyncResult, Func<IAsyncResult,TResult>, TaskCreationOptions)

지정된 IAsyncResult가 완료될 때 End 메서드 함수를 실행하는 작업을 만듭니다.Creates a task that executes an end method function when a specified IAsyncResult completes.

FromAsync(IAsyncResult, Func<IAsyncResult,TResult>, TaskCreationOptions, TaskScheduler)

지정된 IAsyncResult가 완료될 때 End 메서드 함수를 실행하는 작업을 만듭니다.Creates a task that executes an end method function when a specified IAsyncResult completes.

FromAsync<TArg1,TArg2,TArg3>(Func<TArg1,TArg2,TArg3,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, TArg2, TArg3, Object)

비동기 프로그래밍 모델 패턴을 따르는 Begin 및 End 메서드 쌍을 나타내는 작업을 만듭니다.Creates a task that represents a pair of begin and end methods that conform to the Asynchronous Programming Model pattern.

FromAsync<TArg1,TArg2,TArg3>(Func<TArg1,TArg2,TArg3,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, TArg2, TArg3, Object, TaskCreationOptions)

비동기 프로그래밍 모델 패턴을 따르는 Begin 및 End 메서드 쌍을 나타내는 작업을 만듭니다.Creates a task that represents a pair of begin and end methods that conform to the Asynchronous Programming Model pattern.

FromAsync<TArg1,TArg2>(Func<TArg1,TArg2,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, TArg2, Object)

비동기 프로그래밍 모델 패턴을 따르는 Begin 및 End 메서드 쌍을 나타내는 작업을 만듭니다.Creates a task that represents a pair of begin and end methods that conform to the Asynchronous Programming Model pattern.

FromAsync<TArg1,TArg2>(Func<TArg1,TArg2,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, TArg2, Object, TaskCreationOptions)

비동기 프로그래밍 모델 패턴을 따르는 Begin 및 End 메서드 쌍을 나타내는 작업을 만듭니다.Creates a task that represents a pair of begin and end methods that conform to the Asynchronous Programming Model pattern.

FromAsync<TArg1>(Func<TArg1,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, Object)

비동기 프로그래밍 모델 패턴을 따르는 Begin 및 End 메서드 쌍을 나타내는 작업을 만듭니다.Creates a task that represents a pair of begin and end methods that conform to the Asynchronous Programming Model pattern.

FromAsync<TArg1>(Func<TArg1,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, Object, TaskCreationOptions)

비동기 프로그래밍 모델 패턴을 따르는 Begin 및 End 메서드 쌍을 나타내는 작업을 만듭니다.Creates a task that represents a pair of begin and end methods that conform to the Asynchronous Programming Model pattern.

GetHashCode()

기본 해시 함수로 작동합니다.Serves as the default hash function.

(다음에서 상속됨 Object)
GetType()

현재 인스턴스의 Type을 가져옵니다.Gets the Type of the current instance.

(다음에서 상속됨 Object)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

(다음에서 상속됨 Object)
StartNew(Func<Object,TResult>, Object)

작업을 만들고 시작합니다.Creates and starts a task.

StartNew(Func<Object,TResult>, Object, CancellationToken)

작업을 만들고 시작합니다.Creates and starts a task.

StartNew(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions, TaskScheduler)

작업을 만들고 시작합니다.Creates and starts a task.

StartNew(Func<Object,TResult>, Object, TaskCreationOptions)

작업을 만들고 시작합니다.Creates and starts a task.

StartNew(Func<TResult>)

작업을 만들고 시작합니다.Creates and starts a task.

StartNew(Func<TResult>, CancellationToken)

작업을 만들고 시작합니다.Creates and starts a task.

StartNew(Func<TResult>, CancellationToken, TaskCreationOptions, TaskScheduler)

작업을 만들고 시작합니다.Creates and starts a task.

StartNew(Func<TResult>, TaskCreationOptions)

작업을 만들고 시작합니다.Creates and starts a task.

ToString()

현재 개체를 나타내는 문자열을 반환합니다.Returns a string that represents the current object.

(다음에서 상속됨 Object)

적용 대상

스레드 보안

모든 public 및 protected 멤버만 TaskFactory<TResult> 는 스레드로부터 안전 하 고 여러 스레드에서 동시에 사용할 수 있습니다.All public and protected members of TaskFactory<TResult> are thread-safe and may be used concurrently from multiple threads.

추가 정보