Task.Factory Proprietà

Definizione

Fornisce l'accesso ai metodi factory per la creazione e la configurazione delle istanze di Task e Task<TResult>.

public static System.Threading.Tasks.TaskFactory Factory { get; }

Valore della proprietà

TaskFactory

Oggetto factory in grado di creare una vasta gamma di oggetti Task e Task<TResult>.

Commenti

Questa proprietà restituisce un'istanza predefinita della TaskFactory classe identica a quella creata chiamando il costruttore senza TaskFactory.TaskFactory() parametri. Ha i valori delle proprietà seguenti:

L'uso più comune di questa proprietà consiste nel creare e avviare una nuova attività in una singola chiamata al TaskFactory.StartNew metodo .

Nota

A partire da .NET Framework 4.5, il Task.Run metodo fornisce il modo più semplice per creare un Task oggetto con valori di configurazione predefiniti.

Nell'esempio seguente viene utilizzata la proprietà statica Factory per effettuare due chiamate al TaskFactory.StartNew metodo . Il primo popola una matrice con i nomi dei file nella directory MyDocuments dell'utente, mentre la seconda popola una matrice con i nomi delle sottodirectory della directory MyDocuments dell'utente. Chiama quindi il TaskFactory.ContinueWhenAll(Task[], Action<Task[]>) metodo , che visualizza informazioni sul numero di file e directory nelle due matrici dopo il completamento dell'esecuzione delle prime due attività.

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

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

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

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

Si applica a

Vedi anche