Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo TaskFactory.StartNew (Action)

 

Data di pubblicazione: ottobre 2016

Crea e avvia un'attività.

Spazio dei nomi:   System.Threading.Tasks
Assembly:  mscorlib (in mscorlib.dll)

public Task StartNew(
	Action action
)

Parametri

action
Type: System.Action

Delegato dell'azione da eseguire in modo asincrono.

Valore restituito

Type: System.Threading.Tasks.Task

Attività avviata.

Exception Condition
ArgumentNullException

Il action argomento è null.

La chiamata a StartNew è funzionalmente equivalente alla creazione di un'attività utilizzando uno dei relativi costruttori e quindi chiamando il Task.Start metodo per la pianificazione per l'esecuzione.

A partire dal .NET Framework 4.5, è possibile utilizzare il Task.Run(Action) in modo rapido per chiamare il metodo StartNew(Action) con parametri predefiniti. Si noti, tuttavia, che vi sia una differenza nel comportamento tra i due metodi per quanto riguarda: Task.Run(Action) per impostazione predefinita non consente figlio attività avviate con il TaskCreationOptions.AttachedToParent opzione per il collegamento all'oggetto corrente Task istanza, mentre StartNew(Action) viene. Per ulteriori informazioni ed esempi di codice, vedere Task.Run vs Task.Factory.StartNew in parallelo blog sulla programmazione con .NET.

Nell'esempio seguente viene utilizzata la StartNew(Action) metodo da richiamare più volte un Action delegato che genera un numero casuale, interpreta come un punto di codice Unicode, viene convertito in un'unità di codice con codifica UTF16 e visualizza le informazioni di carattere risultante o i caratteri.

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

public class Example
{
   public static void Main()
   {
      Random rnd = new Random();
      List<Task> tasks  = new List<Task>();
      // Execute the task 10 times.
      for (int ctr = 1; ctr <= 9; ctr++) {
         tasks.Add(Task.Factory.StartNew( () => {
                                            int utf32 = 0;
                                            lock(rnd) {
                                               // Get UTF32 value.
                                               utf32 = rnd.Next(0, 0xE01F0);
                                            }
                                            // Convert it to a UTF16-encoded character.
                                            string utf16 = Char.ConvertFromUtf32(utf32);
                                            // Display information about the character.
                                            Console.WriteLine("0x{0:X8} --> '{1,2}' ({2})", 
                                                              utf32, utf16, ShowHex(utf16));
                                         }));                           
      }
      Task.WaitAll(tasks.ToArray()); 
   }

   private static string ShowHex(string value)
   {
      string hexString = null;
      // Handle only non-control characters.
      if (! Char.IsControl(value, 0)) {
         foreach (var ch in value)
            hexString += String.Format("0x{0} ", Convert.ToUInt16(ch));

      }   
      return hexString.Trim();
   }
}
// The example displays the following output:
//       0x00097103 --> '����' (0x55836 0x56579)
//       0x000A98A1 --> '����' (0x55910 0x56481)
//       0x00050002 --> '����' (0x55552 0x56322)
//       0x0000FEF1 --> ' ﻱ' (0x65265)
//       0x0008BC0A --> '����' (0x55791 0x56330)
//       0x000860EA --> '����' (0x55768 0x56554)
//       0x0009AC5A --> '����' (0x55851 0x56410)
//       0x00053320 --> '����' (0x55564 0x57120)
//       0x000874EF --> '����' (0x55773 0x56559)

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 4.0
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 5.0
Windows Phone Silverlight
Disponibile da 8.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: