Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Constructor Task (Action<Object>, Object)

 

Publicado: octubre de 2016

Inicializa una nueva instancia de Task con la acción y el estado especificados.

Espacio de nombres:   System.Threading.Tasks
Ensamblado:  mscorlib (en mscorlib.dll)

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

Parámetros

action
Type: System.Action<Object>

Delegado que representa el código que se va a ejecutar en la tarea.

state
Type: System.Object

Objeto que representa los datos que la acción va a usar.

Exception Condition
ArgumentNullException

El argumento action es null.

En lugar de llamar a este constructor, la manera más común para crear instancias de un Task objeto e inicie una tarea que se está llamando a estático TaskFactory.StartNew(Action<Object>, Object) método. La única ventaja que ofrece este constructor es que permite la creación de instancias de objeto se separa de la invocación de la tarea.

En el ejemplo siguiente se define una matriz de palabras de letra de 6. Cada palabra se pasa como argumento a la Task(Action<Object>, Object) constructor, cuya Action<T> delegado codifica los caracteres de la palabra, a continuación, muestra la palabra original y su versión alterada.

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

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 4.0
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 5.0
Windows Phone Silverlight
Disponible desde 8.0
Windows Phone
Disponible desde 8.1
Volver al principio
Mostrar: