Task<TResult> 建構函式
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
初始化一個新 Task<TResult> 物件。
多載
| 名稱 | Description |
|---|---|
| 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>)
- 來源:
- Future.cs
- 來源:
- Task_T.cs
- 來源:
- Future.cs
- 來源:
- Future.cs
- 來源:
- Future.cs
初始化 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+ 會匹配零、一個或多個標點符號,後面接著一個或多個空白字元。 它假設相符項目的總數等於近似字數。
備註
此建構器僅應在需要將任務建立與啟動分開的進階情境中使用。
與其呼叫這個建構子,最常見的實例 Task<TResult> 化物件並啟動任務的方式,是呼叫靜態 Task.Run<TResult>(Func<TResult>) 與 TaskFactory<TResult>.StartNew(Func<TResult>) 方法。
如果需要一個沒有動作的任務,只是為了讓 API 使用者有東西等待,就應該使用 a TaskCompletionSource<TResult> 。
另請參閱
- 工作平行程式庫 (TPL)
- 以任務導向的異步程式設計
適用於
Task<TResult>(Func<Object,TResult>, Object)
- 來源:
- Future.cs
- 來源:
- Task_T.cs
- 來源:
- Future.cs
- 來源:
- Future.cs
- 來源:
- Future.cs
初始 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)
參數
- state
- Object
一個代表動作將使用資料的物件。
例外狀況
論 function 點為 null。
論 function 點為 null。
備註
與其呼叫此建構子,最常見的實例 Task<TResult> 化物件並啟動任務的方式是呼叫靜態 TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object) 方法。 此建構器唯一的優點是允許物件實例化與任務調用分離。
另請參閱
- 工作平行程式庫 (TPL)
- 以任務導向的異步程式設計
適用於
Task<TResult>(Func<TResult>, CancellationToken)
- 來源:
- Future.cs
- 來源:
- Task_T.cs
- 來源:
- Future.cs
- 來源:
- Future.cs
- 來源:
- Future.cs
初始化 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 將被指派執行這項任務。
例外狀況
CancellationTokenSource那個已經被cancellationToken處理掉的。
論 function 點為 null。
論 function 點為 null。
備註
與其呼叫這個建構子,最常見的實例 Task<TResult> 化物件並啟動任務的方式,是呼叫靜態 Task.Run<TResult>(Func<TResult>, CancellationToken) 與 TaskFactory<TResult>.StartNew(Func<TResult>, CancellationToken) 方法。 此建構器唯一的優點是允許物件實例化與任務調用分離。
另請參閱
- 工作平行程式庫 (TPL)
- 以任務導向的異步程式設計
適用於
Task<TResult>(Func<TResult>, TaskCreationOptions)
- 來源:
- Future.cs
- 來源:
- Task_T.cs
- 來源:
- Future.cs
- 來源:
- Future.cs
- 來源:
- Future.cs
初始 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) 方法。 此建構器唯一的優點是允許物件實例化與任務調用分離。
另請參閱
- 工作平行程式庫 (TPL)
- 以任務導向的異步程式設計
適用於
Task<TResult>(Func<Object,TResult>, Object, CancellationToken)
- 來源:
- Future.cs
- 來源:
- Task_T.cs
- 來源:
- Future.cs
- 來源:
- Future.cs
- 來源:
- Future.cs
初始化一個包含指定動作、狀態和選項的新物件 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)
參數
- state
- Object
一個代表函式將使用資料的物件。
- cancellationToken
- CancellationToken
他們 CancellationToken 將被指派到新的任務。
例外狀況
CancellationTokenSource那個已經被cancellationToken處理掉的。
論 function 點為 null。
論 function 點為 null。
備註
與其呼叫此建構子,最常見的實例 Task<TResult> 化物件並啟動任務的方式是呼叫靜態 TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object, CancellationToken) 方法。 此建構器唯一的優點是允許物件實例化與任務調用分離。
另請參閱
- 工作平行程式庫 (TPL)
- 以任務導向的異步程式設計
適用於
Task<TResult>(Func<Object,TResult>, Object, TaskCreationOptions)
- 來源:
- Future.cs
- 來源:
- Task_T.cs
- 來源:
- Future.cs
- 來源:
- Future.cs
- 來源:
- Future.cs
初始化一個包含指定動作、狀態和選項的新物件 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)
參數
- state
- Object
一個代表函式將使用資料的物件。
- creationOptions
- TaskCreationOptions
它們 TaskCreationOptions 用來自訂任務的行為。
例外狀況
該creationOptions參數指定了一個無效的值。TaskCreationOptions
論 function 點為 null。
論 function 點為 null。
備註
與其呼叫此建構子,最常見的實例 Task<TResult> 化物件並啟動任務的方式是呼叫靜態 TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object, TaskCreationOptions) 方法。 此建構器唯一的優點是允許物件實例化與任務調用分離。
另請參閱
- 工作平行程式庫 (TPL)
- 以任務導向的異步程式設計
適用於
Task<TResult>(Func<TResult>, CancellationToken, TaskCreationOptions)
- 來源:
- Future.cs
- 來源:
- Task_T.cs
- 來源:
- Future.cs
- 來源:
- Future.cs
- 來源:
- Future.cs
初始 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 用來自訂任務的行為。
例外狀況
CancellationTokenSource那個已經被cancellationToken處理掉的。
該creationOptions參數指定了一個無效的值。TaskCreationOptions
論 function 點為 null。
論 function 點為 null。
備註
與其呼叫此建構子,最常見的實例 Task<TResult> 化物件並啟動任務的方式是呼叫靜態 TaskFactory.StartNew<TResult>(Func<TResult>, CancellationToken, TaskCreationOptions, TaskScheduler) 方法。 此建構器唯一的優點是允許物件實例化與任務調用分離。
另請參閱
- 工作平行程式庫 (TPL)
- 以任務導向的異步程式設計
適用於
Task<TResult>(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions)
- 來源:
- Future.cs
- 來源:
- Task_T.cs
- 來源:
- Future.cs
- 來源:
- Future.cs
- 來源:
- Future.cs
初始化一個包含指定動作、狀態和選項的新物件 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)
參數
- state
- Object
一個代表函式將使用資料的物件。
- cancellationToken
- CancellationToken
他們 CancellationToken 將被指派到新的任務。
- creationOptions
- TaskCreationOptions
它們 TaskCreationOptions 用來自訂任務的行為。
例外狀況
CancellationTokenSource那個已經被cancellationToken處理掉的。
該creationOptions參數指定了一個無效的值。TaskCreationOptions
論 function 點為 null。
論 function 點為 null。
備註
與其呼叫此建構子,最常見的實例 Task<TResult> 化物件並啟動任務的方式是呼叫靜態 TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions, TaskScheduler) 方法。 此建構器唯一的優點是允許物件實例化與任務調用分離。
另請參閱
- 工作平行程式庫 (TPL)
- 以任務導向的異步程式設計