Task<TResult> 생성자

정의

Task<TResult> 개체를 초기화합니다.

오버로드

Task<TResult>(Func<TResult>)

지정된 함수를 사용하여 새 Task<TResult>을 초기화합니다.

Task<TResult>(Func<Object,TResult>, Object)

지정된 함수 및 상태를 사용하여 새 Task<TResult>을 초기화합니다.

Task<TResult>(Func<TResult>, CancellationToken)

지정된 함수를 사용하여 새 Task<TResult>을 초기화합니다.

Task<TResult>(Func<TResult>, TaskCreationOptions)

지정된 함수 및 만들기 옵션을 사용하여 새 Task<TResult>을 초기화합니다.

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

지정된 작업, 상태 및 옵션을 사용하여 새 Task<TResult>를 초기화합니다.

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

지정된 작업, 상태 및 옵션을 사용하여 새 Task<TResult>를 초기화합니다.

Task<TResult>(Func<TResult>, CancellationToken, TaskCreationOptions)

지정된 함수 및 만들기 옵션을 사용하여 새 Task<TResult>을 초기화합니다.

Task<TResult>(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions)

지정된 작업, 상태 및 옵션을 사용하여 새 Task<TResult>를 초기화합니다.

Task<TResult>(Func<TResult>)

지정된 함수를 사용하여 새 Task<TResult>을 초기화합니다.

public:
 Task(Func<TResult> ^ function);
public Task (Func<TResult> function);
new System.Threading.Tasks.Task<'Result> : Func<'Result> -> System.Threading.Tasks.Task<'Result>
Public Sub New (function As Func(Of TResult))

매개 변수

function
Func<TResult>

작업에서 실행할 코드를 나타내는 대리자입니다. 함수가 완료되면 작업의 Result 속성이 함수의 결과 값을 반환하도록 설정됩니다.

예외

function 인수가 null인 경우

function 인수가 null인 경우

예제

다음 예제에서는 게시된 책을 나타내는 텍스트 파일의 대략적인 단어 수를 계산합니다. 각 작업은 파일을 열고, 전체 내용을 비동기적으로 읽고, 정규식을 사용하여 단어 개수를 계산합니다. 이 Task.WaitAll(Task[]) 메서드는 콘솔에 각 책의 단어 개수를 표시하기 전에 모든 작업이 완료되었는지 확인하기 위해 호출됩니다.

개체 인스턴스화는 이 예제에서 개체 실행과 구분되므로 예제에서 각 파일이 있는지 확인할 수 있습니다. 그렇지 않으면 누락된 파일의 이름이 표시됩니다. 그렇지 않으면 메서드를 Task.Start 호출하여 각 작업을 시작합니다.

using System;
using System.IO;
using System.Text.RegularExpressions;
using System.Threading.Tasks;

public class Example
{
   public static async Task Main()
   {
      string pattern = @"\p{P}*\s+";
      string[] titles = { "Sister Carrie", "The Financier" };
      Task<int>[] tasks = new Task<int>[titles.Length];

      for (int ctr = 0; ctr < titles.Length; ctr++) {
         string s = titles[ctr];
         tasks[ctr] = new Task<int>( () => {
                                   // Number of words.
                                   int nWords = 0;
                                   // Create filename from title.
                                   string fn = s + ".txt";

                                   StreamReader sr = new StreamReader(fn);
                                   string input = sr.ReadToEndAsync().Result;
                                   sr.Close();
                                   nWords = Regex.Matches(input, pattern).Count;
                                   return nWords;
                                } );
      }
      // Ensure files exist before launching tasks.
      bool allExist = true;
      foreach (var title in titles) {
         string fn = title + ".txt";
         if (! File.Exists(fn)) {
            allExist = false;
            Console.WriteLine("Cannot find '{0}'", fn);
            break;
         }   
      }
      // Launch tasks 
      if (allExist) {
         foreach (var t in tasks)
            t.Start();
      
        await Task.WhenAll(tasks);
  
        Console.WriteLine("Word Counts:\n");
        for (int ctr = 0; ctr < titles.Length; ctr++)
           Console.WriteLine("{0}: {1,10:N0} words", titles[ctr], tasks[ctr].Result);
      }   
   }
}
// The example displays the following output:
//       Sister Carrie:    159,374 words
//       The Financier:    196,362 words
Imports System.IO
Imports System.Text.RegularExpressions
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim pattern As String = "\p{P}*\s+"
      Dim titles() As String = { "Sister Carrie",
                                 "The Financier" }
      Dim tasks(titles.Length - 1) As Task(Of Integer)

      For ctr As Integer = 0 To titles.Length - 1
         Dim s As String = titles(ctr)
         tasks(ctr) = New Task(Of Integer)( Function()
                                   ' Number of words.
                                   Dim nWords As Integer = 0
                                   ' Create filename from title.
                                   Dim fn As String = s + ".txt"

                                   Dim sr As New StreamReader(fn)
                                   Dim input As String = sr.ReadToEndAsync().Result
                                   sr.Close()
                                   nWords = Regex.Matches(input, pattern).Count
                                   Return nWords
                                End Function)
      Next

      ' Ensure files exist before launching tasks.
      Dim allExist As Boolean = True
      For Each title In titles
         Dim fn As String = title + ".txt"
         If Not File.Exists(fn) Then
            allExist = false
            Console.WriteLine("Cannot find '{0}'", fn)
            Exit For
         End If   
      Next
      ' Launch tasks 
      If allExist Then
         For Each t in tasks
            t.Start()
         Next
         Task.WaitAll(tasks)

         Console.WriteLine("Word Counts:")
         Console.WriteLine()
         For ctr As Integer = 0 To titles.Length - 1
         Console.WriteLine("{0}: {1,10:N0} words", titles(ctr), tasks(ctr).Result)
         Next
      End If   
   End Sub
End Module
' The example displays the following output:
'       Sister Carrie:    159,374 words
'       The Financier:    196,362 words

정규식 패턴 \p{P}*\s+ 은 0개, 1개 이상의 문장 부호 문자와 하나 이상의 공백 문자를 찾습니다. 일치 항목의 총 수가 대략적인 단어 수와 동일하다고 가정합니다.

설명

이 생성자는 태스크 만들기 및 시작을 구분해야 하는 고급 시나리오에서만 사용해야 합니다.

이 생성자를 호출하는 대신 개체를 인스턴스화 Task<TResult> 하고 작업을 시작하는 가장 일반적인 방법은 정적 Task.Run<TResult>(Func<TResult>)TaskFactory<TResult>.StartNew(Func<TResult>) 메서드를 호출하는 것입니다.

API 소비자가 대기 TaskCompletionSource<TResult> 해야 할 작업을 갖기 위해서만 작업이 없는 작업이 필요한 경우 사용해야 합니다.

추가 정보

적용 대상

Task<TResult>(Func<Object,TResult>, Object)

지정된 함수 및 상태를 사용하여 새 Task<TResult>을 초기화합니다.

public:
 Task(Func<System::Object ^, TResult> ^ function, System::Object ^ state);
public Task (Func<object,TResult> function, object state);
public Task (Func<object?,TResult> function, object? state);
new System.Threading.Tasks.Task<'Result> : Func<obj, 'Result> * obj -> System.Threading.Tasks.Task<'Result>
Public Sub New (function As Func(Of Object, TResult), state As Object)

매개 변수

function
Func<Object,TResult>

작업에서 실행할 코드를 나타내는 대리자입니다. 함수가 완료되면 작업의 Result 속성이 함수의 결과 값을 반환하도록 설정됩니다.

state
Object

동작에서 사용할 데이터를 나타내는 개체입니다.

예외

function 인수가 null인 경우

function 인수가 null인 경우

설명

이 생성자를 호출하는 대신 개체를 인스턴스화 Task<TResult> 하고 작업을 시작하는 가장 일반적인 방법은 정적 TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object) 메서드를 호출하는 것입니다. 이 생성자가 제공하는 유일한 이점은 개체 인스턴스화를 작업 호출과 분리할 수 있다는 것입니다.

추가 정보

적용 대상

Task<TResult>(Func<TResult>, CancellationToken)

지정된 함수를 사용하여 새 Task<TResult>을 초기화합니다.

public:
 Task(Func<TResult> ^ function, System::Threading::CancellationToken cancellationToken);
public Task (Func<TResult> function, System.Threading.CancellationToken cancellationToken);
new System.Threading.Tasks.Task<'Result> : Func<'Result> * System.Threading.CancellationToken -> System.Threading.Tasks.Task<'Result>
Public Sub New (function As Func(Of TResult), cancellationToken As CancellationToken)

매개 변수

function
Func<TResult>

작업에서 실행할 코드를 나타내는 대리자입니다. 함수가 완료되면 작업의 Result 속성이 함수의 결과 값을 반환하도록 설정됩니다.

cancellationToken
CancellationToken

이 작업에 할당할 CancellationToken입니다.

예외

cancellationToken을 만든 CancellationTokenSource가 이미 삭제되었습니다.

function 인수가 null인 경우

function 인수가 null인 경우

설명

이 생성자를 호출하는 대신 개체를 인스턴스화 Task<TResult> 하고 작업을 시작하는 가장 일반적인 방법은 정적 Task.Run<TResult>(Func<TResult>, CancellationToken)TaskFactory<TResult>.StartNew(Func<TResult>, CancellationToken) 메서드를 호출하는 것입니다. 이 생성자가 제공하는 유일한 이점은 개체 인스턴스화를 작업 호출과 분리할 수 있다는 것입니다.

추가 정보

적용 대상

Task<TResult>(Func<TResult>, TaskCreationOptions)

지정된 함수 및 만들기 옵션을 사용하여 새 Task<TResult>을 초기화합니다.

public:
 Task(Func<TResult> ^ function, System::Threading::Tasks::TaskCreationOptions creationOptions);
public Task (Func<TResult> function, System.Threading.Tasks.TaskCreationOptions creationOptions);
new System.Threading.Tasks.Task<'Result> : Func<'Result> * System.Threading.Tasks.TaskCreationOptions -> System.Threading.Tasks.Task<'Result>
Public Sub New (function As Func(Of TResult), creationOptions As TaskCreationOptions)

매개 변수

function
Func<TResult>

작업에서 실행할 코드를 나타내는 대리자입니다. 함수가 완료되면 작업의 Result 속성이 함수의 결과 값을 반환하도록 설정됩니다.

creationOptions
TaskCreationOptions

작업의 동작을 사용자 지정하는 데 사용할 TaskCreationOptions입니다.

예외

creationOptions 인수는 TaskCreationOptions에 대해 잘못된 값을 지정합니다.

function 인수가 null인 경우

function 인수가 null인 경우

설명

이 생성자를 호출하는 대신 개체를 인스턴스화 Task<TResult> 하고 작업을 시작하는 가장 일반적인 방법은 정적 TaskFactory<TResult>.StartNew(Func<TResult>, TaskCreationOptions) 메서드를 호출하는 것입니다. 이 생성자가 제공하는 유일한 이점은 개체 인스턴스화를 작업 호출과 분리할 수 있다는 것입니다.

추가 정보

적용 대상

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

지정된 작업, 상태 및 옵션을 사용하여 새 Task<TResult>를 초기화합니다.

public:
 Task(Func<System::Object ^, TResult> ^ function, System::Object ^ state, System::Threading::CancellationToken cancellationToken);
public Task (Func<object,TResult> function, object state, System.Threading.CancellationToken cancellationToken);
public Task (Func<object?,TResult> function, object? state, System.Threading.CancellationToken cancellationToken);
new System.Threading.Tasks.Task<'Result> : Func<obj, 'Result> * obj * System.Threading.CancellationToken -> System.Threading.Tasks.Task<'Result>
Public Sub New (function As Func(Of Object, TResult), state As Object, cancellationToken As CancellationToken)

매개 변수

function
Func<Object,TResult>

작업에서 실행할 코드를 나타내는 대리자입니다. 함수가 완료되면 작업의 Result 속성이 함수의 결과 값을 반환하도록 설정됩니다.

state
Object

함수에서 사용할 데이터를 나타내는 개체입니다.

cancellationToken
CancellationToken

새 작업에 할당할 CancellationToken입니다.

예외

cancellationToken을 만든 CancellationTokenSource가 이미 삭제되었습니다.

function 인수가 null인 경우

function 인수가 null인 경우

설명

이 생성자를 호출하는 대신 개체를 인스턴스화 Task<TResult> 하고 작업을 시작하는 가장 일반적인 방법은 정적 TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object, CancellationToken) 메서드를 호출하는 것입니다. 이 생성자가 제공하는 유일한 이점은 개체 인스턴스화를 작업 호출과 분리할 수 있다는 것입니다.

추가 정보

적용 대상

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

지정된 작업, 상태 및 옵션을 사용하여 새 Task<TResult>를 초기화합니다.

public:
 Task(Func<System::Object ^, TResult> ^ function, System::Object ^ state, System::Threading::Tasks::TaskCreationOptions creationOptions);
public Task (Func<object,TResult> function, object state, System.Threading.Tasks.TaskCreationOptions creationOptions);
public Task (Func<object?,TResult> function, object? state, System.Threading.Tasks.TaskCreationOptions creationOptions);
new System.Threading.Tasks.Task<'Result> : Func<obj, 'Result> * obj * System.Threading.Tasks.TaskCreationOptions -> System.Threading.Tasks.Task<'Result>
Public Sub New (function As Func(Of Object, TResult), state As Object, creationOptions As TaskCreationOptions)

매개 변수

function
Func<Object,TResult>

작업에서 실행할 코드를 나타내는 대리자입니다. 함수가 완료되면 작업의 Result 속성이 함수의 결과 값을 반환하도록 설정됩니다.

state
Object

함수에서 사용할 데이터를 나타내는 개체입니다.

creationOptions
TaskCreationOptions

작업의 동작을 사용자 지정하는 데 사용할 TaskCreationOptions입니다.

예외

creationOptions 인수는 TaskCreationOptions에 대해 잘못된 값을 지정합니다.

function 인수가 null인 경우

function 인수가 null인 경우

설명

이 생성자를 호출하는 대신 개체를 인스턴스화 Task<TResult> 하고 작업을 시작하는 가장 일반적인 방법은 정적 TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object, TaskCreationOptions) 메서드를 호출하는 것입니다. 이 생성자가 제공하는 유일한 이점은 개체 인스턴스화를 작업 호출과 분리할 수 있다는 것입니다.

추가 정보

적용 대상

Task<TResult>(Func<TResult>, CancellationToken, TaskCreationOptions)

지정된 함수 및 만들기 옵션을 사용하여 새 Task<TResult>을 초기화합니다.

public:
 Task(Func<TResult> ^ function, System::Threading::CancellationToken cancellationToken, System::Threading::Tasks::TaskCreationOptions creationOptions);
public Task (Func<TResult> function, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskCreationOptions creationOptions);
new System.Threading.Tasks.Task<'Result> : Func<'Result> * System.Threading.CancellationToken * System.Threading.Tasks.TaskCreationOptions -> System.Threading.Tasks.Task<'Result>
Public Sub New (function As Func(Of TResult), cancellationToken As CancellationToken, creationOptions As TaskCreationOptions)

매개 변수

function
Func<TResult>

작업에서 실행할 코드를 나타내는 대리자입니다. 함수가 완료되면 작업의 Result 속성이 함수의 결과 값을 반환하도록 설정됩니다.

cancellationToken
CancellationToken

새 작업에 할당할 CancellationToken입니다.

creationOptions
TaskCreationOptions

작업의 동작을 사용자 지정하는 데 사용할 TaskCreationOptions입니다.

예외

cancellationToken을 만든 CancellationTokenSource가 이미 삭제되었습니다.

creationOptions 인수는 TaskCreationOptions에 대해 잘못된 값을 지정합니다.

function 인수가 null인 경우

function 인수가 null인 경우

설명

이 생성자를 호출하는 대신 개체를 인스턴스화 Task<TResult> 하고 작업을 시작하는 가장 일반적인 방법은 정적 TaskFactory.StartNew<TResult>(Func<TResult>, CancellationToken, TaskCreationOptions, TaskScheduler) 메서드를 호출하는 것입니다. 이 생성자가 제공하는 유일한 이점은 개체 인스턴스화를 작업 호출과 분리할 수 있다는 것입니다.

추가 정보

적용 대상

Task<TResult>(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions)

지정된 작업, 상태 및 옵션을 사용하여 새 Task<TResult>를 초기화합니다.

public:
 Task(Func<System::Object ^, TResult> ^ function, System::Object ^ state, System::Threading::CancellationToken cancellationToken, System::Threading::Tasks::TaskCreationOptions creationOptions);
public Task (Func<object,TResult> function, object state, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskCreationOptions creationOptions);
public Task (Func<object?,TResult> function, object? state, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskCreationOptions creationOptions);
new System.Threading.Tasks.Task<'Result> : Func<obj, 'Result> * obj * System.Threading.CancellationToken * System.Threading.Tasks.TaskCreationOptions -> System.Threading.Tasks.Task<'Result>
Public Sub New (function As Func(Of Object, TResult), state As Object, cancellationToken As CancellationToken, creationOptions As TaskCreationOptions)

매개 변수

function
Func<Object,TResult>

작업에서 실행할 코드를 나타내는 대리자입니다. 함수가 완료되면 작업의 Result 속성이 함수의 결과 값을 반환하도록 설정됩니다.

state
Object

함수에서 사용할 데이터를 나타내는 개체입니다.

cancellationToken
CancellationToken

새 작업에 할당할 CancellationToken입니다.

creationOptions
TaskCreationOptions

작업의 동작을 사용자 지정하는 데 사용할 TaskCreationOptions입니다.

예외

cancellationToken을 만든 CancellationTokenSource가 이미 삭제되었습니다.

creationOptions 인수는 TaskCreationOptions에 대해 잘못된 값을 지정합니다.

function 인수가 null인 경우

function 인수가 null인 경우

설명

이 생성자를 호출하는 대신 개체를 인스턴스화 Task<TResult> 하고 작업을 시작하는 가장 일반적인 방법은 정적 TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions, TaskScheduler) 메서드를 호출하는 것입니다. 이 생성자가 제공하는 유일한 이점은 개체 인스턴스화를 작업 호출과 분리할 수 있다는 것입니다.

추가 정보

적용 대상