Share via


工作 Factory

工作 Factory 是以 System.Threading.Tasks.TaskFactory 類別 (這個類別會建立 Task 物件) 或 System.Threading.Tasks.TaskFactory<TResult> 類別 (這個類別會建立 Task<TResult> 物件) 表示。 這兩個類別都包含可供您用來執行下列作業的方法:

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() {/*...*/ }
}

請參閱

概念

以 .NET Framework 進行平行程式設計