TaskFactory<TResult> Klass

Definition

Ger stöd för att skapa och schemalägga Task<TResult> objekt.

generic <typename TResult>
public ref class TaskFactory
public class TaskFactory<TResult>
type TaskFactory<'Result> = class
Public Class TaskFactory(Of TResult)

Typparametrar

TResult

Returvärdet för de Task<TResult> objekt som metoderna i den här klassen skapar.

Arv
TaskFactory<TResult>

Exempel

I följande exempel används den statiska Factory egenskapen för att göra två anrop till TaskFactory<TResult>.StartNew metoden. Den första aktiviteten returnerar en strängmatris som fylls med namnen på filerna i användarens Katalog MyDocuments, medan den andra returnerar en strängmatris som är ifylld med namnen på underkatalogerna i användarens Katalog MyDocuments. Den anropar TaskFactory.ContinueWhenAll(Task[], Action<Task[]>) sedan metoden, som visar information om antalet filer och kataloger i matriserna som returneras av de två aktiviteterna när de har slutfört körningen.

using System;
using System.IO;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      Task<string[]>[] tasks = new Task<string[]>[2];
      String docsDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

      tasks[0] = Task<string[]>.Factory.StartNew( () => Directory.GetFiles(docsDirectory));
      tasks[1] = Task<string[]>.Factory.StartNew( () => Directory.GetDirectories(docsDirectory));

      Task.Factory.ContinueWhenAll(tasks, completedTasks => {
                                             Console.WriteLine("{0} contains: ", docsDirectory);
                                             Console.WriteLine("   {0} subdirectories", tasks[1].Result.Length);
                                             Console.WriteLine("   {0} files", tasks[0].Result.Length);
                                          } );
   }
}
// The example displays output like the following:
//       C:\Users\<username>\Documents contains:
//          24 subdirectories
//          16 files
Imports System.IO
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim tasks(1) As Task(Of String())
      Dim docsDirectory As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
      
      tasks(0) = Task(Of String()).Factory.StartNew( Function()Directory.GetFiles(docsDirectory) )
''                                        End Sub )
      tasks(1) = Task(Of String()).Factory.StartNew( Function() Directory.GetDirectories(docsDirectory) )
''                                        End Sub )
      Task.Factory.ContinueWhenAll(tasks, Sub(completedTasks)
                                             Console.WriteLine("{0} contains: ", docsDirectory)
                                             Console.WriteLine("   {0} subdirectories", tasks(1).Result.Length)
                                             Console.WriteLine("   {0} files", tasks(0).Result.Length)
                                          End Sub)
   End Sub
End Module
' The example displays output like the following:
'       C:\Users\<username>\Documents contains:
'          24 subdirectories
'          16 files

Kommentarer

.NET innehåller två fabriker för att skapa och schemalägga uppgifter:

Med TaskFactory<TResult> klassen kan du göra följande:

  • Skapa en uppgift och starta den direkt genom att anropa StartNew metoden. Du kan anropa överlagringarna för den här metoden för att skapa och köra en uppgift som kräver argument som inte är standard.

    Varning

    Från och med .NET Framework 4.5 är metoden Task.Run det enklaste sättet att skapa en uppgift med standardkonfigurationsvärden och starta den omedelbart.

  • Skapa en aktivitet som startar när någon av aktiviteterna i en matris har slutförts genom att anropa ContinueWhenAny metoden eller ContinueWhenAny .

  • Skapa en aktivitet som startar när alla aktiviteter i en matris har slutförts genom att anropa ContinueWhenAll metoden eller ContinueWhenAll .

Den statiska Task<TResult>.Factory egenskapen returnerar ett standardobjekt TaskFactory<TResult> . Du kan också anropa en av TaskFactory<TResult> klasskonstruktorerna för att konfigurera de Task<TResult> objekt som TaskFactory<TResult> klassen skapar. I följande exempel konfigureras ett nytt TaskFactory<TResult> objekt för att skapa aktiviteter som har en angiven annulleringstoken, alternativ för att skapa aktiviteter, fortsättningsalternativ och en anpassad schemaläggare.

using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;

public class Example
{
   static CancellationTokenSource cts = new CancellationTokenSource();

   static TaskFactory<int> factory = new TaskFactory<int>(
      cts.Token,
      TaskCreationOptions.PreferFairness,
      TaskContinuationOptions.ExecuteSynchronously,
      new CustomScheduler());

   static void Main()
   {
      var t2 = factory.StartNew(() => DoWork());
      cts.Dispose();
   }

   static int DoWork()
   {
       /*...*/
       return DateTime.Now.Hour <= 12 ?  1 : 2;
    }
}
Imports System.Collections.Generic
Imports System.Threading
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim cts As New CancellationTokenSource()
      Dim factory As New TaskFactory(Of Integer)(
                         cts.Token,
                         TaskCreationOptions.PreferFairness,
                         TaskContinuationOptions.ExecuteSynchronously,
                         New CustomScheduler())

      Dim t2 = factory.StartNew(Function() DoWork())
      cts.Dispose()
   End Sub

   Function DoWork() As Integer
      Return If(Date.Now.Hour <= 12, 1, 2)
   End Function
End Module

I de flesta fall behöver du inte instansiera en ny TaskFactory<TResult> instans. I stället kan du använda den statiska Task<TResult>.Factory egenskapen, som returnerar ett fabriksobjekt som använder standardvärden. Du kan sedan anropa dess metoder för att starta nya aktiviteter eller definiera aktivitetsfortsättningar. En bild finns i exemplet.

Konstruktorer

Name Description
TaskFactory<TResult>()

Initierar en TaskFactory<TResult> instans med standardkonfigurationen.

TaskFactory<TResult>(CancellationToken, TaskCreationOptions, TaskContinuationOptions, TaskScheduler)

Initierar en TaskFactory<TResult> instans med den angivna konfigurationen.

TaskFactory<TResult>(CancellationToken)

Initierar en TaskFactory<TResult> instans med standardkonfigurationen.

TaskFactory<TResult>(TaskCreationOptions, TaskContinuationOptions)

Initierar en TaskFactory<TResult> instans med den angivna konfigurationen.

TaskFactory<TResult>(TaskScheduler)

Initierar en TaskFactory<TResult> instans med den angivna konfigurationen.

Egenskaper

Name Description
CancellationToken

Hämtar standardtoken för annullering för den här aktivitetsfabriken.

ContinuationOptions

TaskContinuationOptions Hämtar uppräkningsvärdet för den här aktivitetsfabriken.

CreationOptions

TaskCreationOptions Hämtar uppräkningsvärdet för den här aktivitetsfabriken.

Scheduler

Hämtar schemaläggaren för den här aktivitetsfabriken.

Metoder

Name Description
ContinueWhenAll(Task[], Func<Task[],TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Skapar en fortsättningsaktivitet som startas när en uppsättning angivna aktiviteter har slutförts.

ContinueWhenAll(Task[], Func<Task[],TResult>, CancellationToken)

Skapar en fortsättningsaktivitet som startas när en uppsättning angivna aktiviteter har slutförts.

ContinueWhenAll(Task[], Func<Task[],TResult>, TaskContinuationOptions)

Skapar en fortsättningsaktivitet som startas när en uppsättning angivna aktiviteter har slutförts.

ContinueWhenAll(Task[], Func<Task[],TResult>)

Skapar en fortsättningsaktivitet som startas när en uppsättning angivna aktiviteter har slutförts.

ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Skapar en fortsättningsaktivitet som startas när en uppsättning angivna aktiviteter har slutförts.

ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>, CancellationToken)

Skapar en fortsättningsaktivitet som startas när en uppsättning angivna aktiviteter har slutförts.

ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>, TaskContinuationOptions)

Skapar en fortsättningsaktivitet som startas när en uppsättning angivna aktiviteter har slutförts.

ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>)

Skapar en fortsättningsaktivitet som startas när en uppsättning angivna aktiviteter har slutförts.

ContinueWhenAny(Task[], Func<Task,TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Skapar en fortsättningsaktivitet som startas när en aktivitet i den angivna uppsättningen har slutförts.

ContinueWhenAny(Task[], Func<Task,TResult>, CancellationToken)

Skapar en fortsättningsaktivitet som startas när en aktivitet i den angivna uppsättningen har slutförts.

ContinueWhenAny(Task[], Func<Task,TResult>, TaskContinuationOptions)

Skapar en fortsättningsaktivitet som startas när en aktivitet i den angivna uppsättningen har slutförts.

ContinueWhenAny(Task[], Func<Task,TResult>)

Skapar en fortsättningsaktivitet som startas när en aktivitet i den angivna uppsättningen har slutförts.

ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Skapar en fortsättningsaktivitet som startas när en aktivitet i den angivna uppsättningen har slutförts.

ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>, CancellationToken)

Skapar en fortsättningsaktivitet som startas när en aktivitet i den angivna uppsättningen har slutförts.

ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>, TaskContinuationOptions)

Skapar en fortsättningsaktivitet som startas när en aktivitet i den angivna uppsättningen har slutförts.

ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>)

Skapar en fortsättningsaktivitet som startas när en aktivitet i den angivna uppsättningen har slutförts.

Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
FromAsync(Func<AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, Object, TaskCreationOptions)

Skapar en uppgift som representerar ett par start- och slutmetoder som överensstämmer med mönstret Asynkron programmeringsmodell.

FromAsync(Func<AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, Object)

Skapar en uppgift som representerar ett par start- och slutmetoder som överensstämmer med mönstret Asynkron programmeringsmodell.

FromAsync(IAsyncResult, Func<IAsyncResult,TResult>, TaskCreationOptions, TaskScheduler)

Skapar en uppgift som kör en slutmetodfunktion när en angiven IAsyncResult slutförs.

FromAsync(IAsyncResult, Func<IAsyncResult,TResult>, TaskCreationOptions)

Skapar en uppgift som kör en slutmetodfunktion när en angiven IAsyncResult slutförs.

FromAsync(IAsyncResult, Func<IAsyncResult,TResult>)

Skapar en uppgift som kör en slutmetodfunktion när en angiven IAsyncResult slutförs.

FromAsync<TArg1,TArg2,TArg3>(Func<TArg1,TArg2,TArg3,AsyncCallback, Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, TArg2, TArg3, Object, TaskCreationOptions)

Skapar en uppgift som representerar ett par start- och slutmetoder som överensstämmer med mönstret Asynkron programmeringsmodell.

FromAsync<TArg1,TArg2,TArg3>(Func<TArg1,TArg2,TArg3,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, TArg2, TArg3, Object)

Skapar en uppgift som representerar ett par start- och slutmetoder som överensstämmer med mönstret Asynkron programmeringsmodell.

FromAsync<TArg1,TArg2>(Func<TArg1,TArg2,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, TArg2, Object, TaskCreationOptions)

Skapar en uppgift som representerar ett par start- och slutmetoder som överensstämmer med mönstret Asynkron programmeringsmodell.

FromAsync<TArg1,TArg2>(Func<TArg1,TArg2,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, TArg2, Object)

Skapar en uppgift som representerar ett par start- och slutmetoder som överensstämmer med mönstret Asynkron programmeringsmodell.

FromAsync<TArg1>(Func<TArg1,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, Object, TaskCreationOptions)

Skapar en uppgift som representerar ett par start- och slutmetoder som överensstämmer med mönstret Asynkron programmeringsmodell.

FromAsync<TArg1>(Func<TArg1,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, Object)

Skapar en uppgift som representerar ett par start- och slutmetoder som överensstämmer med mönstret Asynkron programmeringsmodell.

GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
StartNew(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions, TaskScheduler)

Skapar och startar en uppgift.

StartNew(Func<Object,TResult>, Object, CancellationToken)

Skapar och startar en uppgift.

StartNew(Func<Object,TResult>, Object, TaskCreationOptions)

Skapar och startar en uppgift.

StartNew(Func<Object,TResult>, Object)

Skapar och startar en uppgift.

StartNew(Func<TResult>, CancellationToken, TaskCreationOptions, TaskScheduler)

Skapar och startar en uppgift.

StartNew(Func<TResult>, CancellationToken)

Skapar och startar en uppgift.

StartNew(Func<TResult>, TaskCreationOptions)

Skapar och startar en uppgift.

StartNew(Func<TResult>)

Skapar och startar en uppgift.

ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)

Gäller för

Trådsäkerhet

Alla offentliga och skyddade medlemmar TaskFactory<TResult> i är trådsäkra och kan användas samtidigt från flera trådar.

Se även