Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

Task.Run (Método) (Action, CancellationToken)

.NET Framework 4.5

Pone en cola el trabajo especificado para ejecutarlo en ThreadPool y devuelve un controlador de tareas para dicho trabajo.

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

'Declaración
Public Shared Function Run ( _
	action As Action, _
	cancellationToken As CancellationToken _
) As Task

Parámetros

action
Tipo: System.Action
Trabajo que se va a ejecutar de forma asincrónica.
cancellationToken
Tipo: System.Threading.CancellationToken
Token de cancelación que se debe usar para cancelar el trabajo.

Valor devuelto

Tipo: System.Threading.Tasks.Task
Una tarea que representa el trabajo en cola para ejecutarse en ThreadPool.

ExcepciónCondición
ArgumentNullException

El valor del parámetro action es referencia null (Nothing en Visual Basic).

TaskCanceledException

Se ha cancelado la tarea.

ObjectDisposedException

El CancellationTokenSource asociado a cancellationToken se desechó.

El método de Run(Action, CancellationToken) es una alternativa más sencilla al método de TaskFactory.StartNew(Action, CancellationToken) . Crea una tarea con los valores predeterminados siguientes:

El ejemplo siguiente llama al método de Run(Action, CancellationToken) para crear una tarea que recorra los archivos en el directorio de C:\Windows\System32 . La expresión lambda llama al método de Parallel.ForEach para agregar información sobre cada archivo en un objeto de List(Of T) . Cada una tarea anidada desasociada invocado por las comprobaciones de bucle de Parallel.ForEach el estado del token de cancelación y, si se solicita la cancelación, llama al método de CancellationToken.ThrowIfCancellationRequested . El método de CancellationToken.ThrowIfCancellationRequested produce una excepción de OperationCanceledException que se controla en catch bloqueado cuando el subproceso de llamada llama al método de Task.Wait .


Imports System.Collections.Generic
Imports System.IO
Imports System.Threading
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim tokenSource As New CancellationTokenSource()
      Dim token As CancellationToken = tokenSource.Token
      Dim files As New List(Of Tuple(Of String, String, Long, Date))()

      Dim t As Task = Task.Run( Sub()
                                   Dim dir As String = "C:\Windows\System32\"
                                   Dim obj As New Object()
                                   If Directory.Exists(dir)Then
                                      Parallel.ForEach(Directory.GetFiles(dir), 
                                         Sub(f)
                                            If token.IsCancellationRequested Then
                                               token.ThrowIfCancellationRequested()
                                            End If  
                                            Dim fi As New FileInfo(f)
                                            SyncLock(obj)
                                              files.Add(Tuple.Create(fi.Name, fi.DirectoryName, fi.Length, fi.LastWriteTimeUtc))          
                                            End SyncLock
                                         End Sub)
                                   End If
                                End Sub, token)
      tokenSource.Cancel()
      Try
         t.Wait() 
         Console.WriteLine("Retrieved information for {0} files.", files.Count)
      Catch e As AggregateException
         Console.WriteLine("Exception messages:")
         For Each ie As Exception In e.InnerExceptions
            Console.WriteLine("   {0}:{1}", ie.GetType().Name, ie.Message)
         Next
         Console.WriteLine()
         Console.WriteLine("Task status: {0}", t.Status)       
      End Try
   End Sub
End Module
' The example displays the following output:
'       Exception messages:
'          TaskCanceledException: A task was canceled.
'       
'       Task status: Canceled


.NET Framework

Compatible con: 4.5.2, 4.5.1, 4.5

.NET para aplicaciones de la Tienda Windows

Compatible con: Windows 8

.NET para aplicaciones de Windows Phone

Compatible con: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2015 Microsoft