工作 Factory
工作 Factory 是以 System.Threading.Tasks.TaskFactory 類別 (這個類別會建立 Task 物件) 或 System.Threading.Tasks.TaskFactory<TResult> 類別 (這個類別會建立 Task<TResult> 物件) 表示。 這兩個類別都包含可供您用來執行下列作業的方法:
建立工作並立即加以啟動。 如需詳細資訊,請參閱工作平行處理原則 (工作平行程式庫)。
建立會在工作陣列中的任何或所有工作完成時啟動的接續工作。 如需詳細資訊,請參閱接續工作。
建立工作,這些工作表示遵循非同步程式設計模型的 begin/end 方法配對。 如需詳細資訊,請參閱 TPL 和傳統 .NET 非同步程式設計。
Task 類別具有表示預設 TaskFactory 的靜態屬性。 通常,TaskFactory 方法是透過 Factory 屬性來叫用,如下列範例所示。
[Visual Basic]
Dim taskA as Task = Task.Factory.StartNew(Sub( ...))
[C#]
Task taskA = Task.Factory.StartNew( () => ...);
在大多數情節中,您不需從 TaskFactory 衍生新類別。 但是,有時候設定新的 TaskFactory,然後將其用於指定特定選項或是用於建立工作與自訂排程器的關聯,都是很有用的做法。 下列範例示範如何設定會建立新工作的 TaskFactory,這些工作全都使用指定的 TaskScheduler 並且具有指定的 TaskCreationOptions 選項。
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() {/*...*/ }
}