Export (0) Print
Expand All

Task Factories

A task factory is represented by the System.Threading.Tasks.TaskFactory class, which creates Task objects, or the System.Threading.Tasks.TaskFactory(Of TResult) class, which creates Task(Of TResult) objects. Both classes contain methods that you can use to:

The Task class has a static property that represents the default TaskFactory. Typically, TaskFactory methods are invoked by using the Factory property, as shown in the following example.

[Visual Basic]

Dim taskA as Task = Task.Factory.StartNew(Sub( ...))

[C#]

Task taskA = Task.Factory.StartNew( () => ...);

In most scenarios, you do not have to derive a new class from TaskFactory. However, it is sometimes useful to configure a new TaskFactory and then use it to specify certain options or to associate tasks with a custom scheduler. The following example shows how to configure a new TaskFactory that creates tasks that all use the specified TaskScheduler and have the specified TaskCreationOptions options.

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
Show:
© 2014 Microsoft