Task<TResult> 생성자
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
새 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)
매개 변수
작업에서 실행할 코드를 나타내는 대리자입니다. 함수가 완료되면 작업의 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)
매개 변수
작업에서 실행할 코드를 나타내는 대리자입니다. 함수가 완료되면 작업의 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)
매개 변수
작업에서 실행할 코드를 나타내는 대리자입니다. 함수가 완료되면 작업의 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)
매개 변수
작업에서 실행할 코드를 나타내는 대리자입니다. 함수가 완료되면 작업의 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) 메서드를 호출하는 것입니다. 이 생성자가 제공하는 유일한 이점은 개체 인스턴스화를 작업 호출과 분리할 수 있다는 것입니다.