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

Método Task.Run<TResult>(Func<TResult>)

.NET Framework (current version)
 

Publicado: octubre de 2016

Pone en cola el trabajo especificado para ejecutarlo en el grupo de subprocesos y devuelve un objeto Task<TResult> que representa ese trabajo.

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

public static Task<TResult> Run<TResult>(
	Func<TResult> function
)

Parámetros

function
Type: System.Func<TResult>

El trabajo que se ejecutará de forma asincrónica.

Valor devuelto

Type: System.Threading.Tasks.Task<TResult>

Un objeto de tarea que representa el trabajo en cola para ejecutarse en el grupo de subprocesos.

Parámetros de tipo

TResult

El tipo devuelto de la tarea.

Exception Condition
ArgumentNullException

El parámetro function es null.

El Run<TResult> método es una alternativa más sencilla a la TaskFactory.StartNew(Action) (método). Crea una tarea con los valores predeterminados siguientes:

Para obtener información sobre cómo controlar las excepciones producidas por operaciones de la tarea, consulte Control de excepciones (Task Parallel Library).

En el ejemplo siguiente se cuenta el número aproximado de palabras en los archivos de texto que representan libros publicados. Cada tarea es responsable de abrir un archivo, leer todo su contenido de forma asincrónica y calcular el recuento de palabras mediante una expresión regular. El WaitAll(Task[]) se invoca para asegurarse de que todas las tareas se han completado antes de mostrar el recuento de palabras de cada libro en la consola.

using System;
using System.IO;
using System.Text.RegularExpressions;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      string pattern = @"\p{P}*\s+";
      string[] titles = { "Sister Carrie", "The Financier" };
      Task<int>[] tasks = new Task<int>[titles.Length];

      for (int ctr = 0; ctr < titles.Length; ctr++) {
         string s = titles[ctr];
         tasks[ctr] = Task.Run( () => {
                                   // Number of words.
                                   int nWords = 0;
                                   // Create filename from title.
                                   string fn = s + ".txt";
                                   if (File.Exists(fn)) {
                                      StreamReader sr = new StreamReader(fn);
                                      string input = sr.ReadToEndAsync().Result;
                                      nWords = Regex.Matches(input, pattern).Count;
                                   }
                                   return nWords;
                                } );
      }
      Task.WaitAll(tasks);

      Console.WriteLine("Word Counts:\n");
      for (int ctr = 0; ctr < titles.Length; ctr++)
         Console.WriteLine("{0}: {1,10:N0} words", titles[ctr], tasks[ctr].Result);
   }
}
// The example displays the following output:
//       Sister Carrie:    159,374 words
//       The Financier:    196,362 words

The regular expression \p{P}*\s+ matches zero, one, or more punctuation characters followed by one or more whitespace characters. It assumes that the total number of matches equals the approximate word count.

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