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

Costruttore Task (Action<Object>, Object)

 

Data di pubblicazione: ottobre 2016

Inizializza un nuovo oggetto Task con l'azione e lo stato specificati.

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

public Task(
	Action<object> action,
	object state
)

Parametri

action
Type: System.Action<Object>

Delegato che rappresenta il codice da eseguire nell'attività.

state
Type: System.Object

Oggetto che rappresenta i dati che devono essere usati dall'azione.

Exception Condition
ArgumentNullException

L'argomento action è null.

Anziché chiamare questo costruttore, il modo più comune per creare un'istanza di un Task oggetto e avviare un'attività è chiamando il metodo statico TaskFactory.StartNew(Action<Object>, Object) metodo. L'unico vantaggio offerto da questo costruttore è che consente la creazione di istanze di oggetto essere separati dalla chiamata di attività.

Nell'esempio seguente definisce una matrice di parole 6 lettera. Ogni parola viene quindi passata come argomento per il Task(Action<Object>, Object) costruttore, il cui Action<T> delegato codifica i caratteri nella parola, quindi Visualizza la parola originale e la relativa versione codificata.

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

public class Example
{
   public static void Main()
   {
      var tasks = new List<Task>();
      Random rnd = new Random();
      Object lockObj = new Object();
      String[] words6 = { "reason", "editor", "rioter", "rental",
                          "senior", "regain", "ordain", "rained" };

      foreach (var word6 in words6) {
         Task t = new Task( (word) => { Char[] chars = word.ToString().ToCharArray();
                                        double[] order = new double[chars.Length];
                                        lock (lockObj) {
                                           for (int ctr = 0; ctr < order.Length; ctr++)
                                              order[ctr] = rnd.NextDouble();
                                           }
                                        Array.Sort(order, chars);
                                        Console.WriteLine("{0} --> {1}", word,
                                                          new String(chars));
                                      }, word6);
         t.Start();
         tasks.Add(t);
      }
      Task.WaitAll(tasks.ToArray());
   }
}
// The example displays output like the following:
//    regain --> irnaeg
//    ordain --> rioadn
//    reason --> soearn
//    rained --> rinade
//    rioter --> itrore
//    senior --> norise
//    rental --> atnerl
//    editor --> oteird

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: