Task Constructeurs

Définition

Initialise un nouveau Task.

Surcharges

Task(Action)

Initialise un nouveau Task avec l'action spécifiée.

Task(Action, CancellationToken)

Initialise un nouveau Task avec l'action spécifiée et CancellationToken.

Task(Action, TaskCreationOptions)

Initialise une nouvelle Task avec l'action et les options de création spécifiées.

Task(Action<Object>, Object)

Initialise un nouveau Task avec l'action et l'état spécifiés.

Task(Action, CancellationToken, TaskCreationOptions)

Initialise une nouvelle Task avec l'action et les options de création spécifiées.

Task(Action<Object>, Object, CancellationToken)

Initialise un nouveau Task avec l’action, l’état et CancellationToken.

Task(Action<Object>, Object, TaskCreationOptions)

Initialise une nouvelle Task avec l'action, l'état et les options spécifiés.

Task(Action<Object>, Object, CancellationToken, TaskCreationOptions)

Initialise une nouvelle Task avec l'action, l'état et les options spécifiés.

Task(Action)

Source:
Task.cs
Source:
Task.cs
Source:
Task.cs

Initialise un nouveau Task avec l'action spécifiée.

public:
 Task(Action ^ action);
public Task (Action action);
new System.Threading.Tasks.Task : Action -> System.Threading.Tasks.Task
Public Sub New (action As Action)

Paramètres

action
Action

Délégué qui représente le code à exécuter dans la tâche.

Exceptions

L'argument action a la valeur null.

Exemples

L’exemple suivant utilise le Task(Action) constructeur pour créer des tâches qui récupèrent les noms de fichiers dans les répertoires spécifiés. Toutes les tâches écrivent les noms de fichiers dans un seul ConcurrentBag<T> objet. L’exemple appelle ensuite la WaitAll(Task[]) méthode pour s’assurer que toutes les tâches sont terminées, puis affiche le nombre total de noms de fichiers écrits dans l’objet ConcurrentBag<T> .

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

public class Example
{
   public static async Task Main()
   {
      var list = new ConcurrentBag<string>();
      string[] dirNames = { ".", ".." };
      List<Task> tasks = new List<Task>();
      foreach (var dirName in dirNames) {
         Task t = new Task( () => { foreach(var path in Directory.GetFiles(dirName))
                                    list.Add(path); }  );
         tasks.Add(t);
         t.Start();
      }
      await Task.WhenAll(tasks.ToArray());
      foreach (Task t in tasks)
         Console.WriteLine("Task {0} Status: {1}", t.Id, t.Status);
         
      Console.WriteLine("Number of files read: {0}", list.Count);
   }
}
// The example displays output like the following:
//       Task 1 Status: RanToCompletion
//       Task 2 Status: RanToCompletion
//       Number of files read: 23
open System.Collections.Concurrent
open System.IO
open System.Threading.Tasks

let main =
    task {
        let list = ConcurrentBag<string>()
        let dirNames = [ "."; ".." ]
        let tasks = ResizeArray()

        for dirName in dirNames do
            let t =
                new Task(fun () ->
                    for path in Directory.GetFiles dirName do
                        list.Add path)

            tasks.Add t
            t.Start()

        do! tasks.ToArray() |> Task.WhenAll

        for t in tasks do
            printfn $"Task {t.Id} Status: {t.Status}"

        printfn $"Number of files read: {list.Count}"
    }

// The example displays output like the following:
//       Task 1 Status: RanToCompletion
//       Task 2 Status: RanToCompletion
//       Number of files read: 23
Imports System.Collections.Concurrent
Imports System.Collections.Generic
Imports System.IO
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim list As New ConcurrentBag(Of String)()
      Dim dirNames() As String = { ".", ".." }
      Dim tasks As New List(Of Task)()
      For Each dirName In dirNames 
         Dim t As New Task( Sub()
                               For Each path In Directory.GetFiles(dirName)
                                  list.Add(path)
                               Next
                            End Sub  )
         tasks.Add(t)
         t.Start()
      Next
      Task.WaitAll(tasks.ToArray())
      For Each t In tasks
         Console.WriteLine("Task {0} Status: {1}", t.Id, t.Status)
      Next   
      Console.WriteLine("Number of files read: {0}", list.Count)
   End Sub
End Module
' The example displays output like the following:
'       Task 1 Status: RanToCompletion
'       Task 2 Status: RanToCompletion
'       Number of files read: 23

L’exemple suivant est identique, sauf qu’il a utilisé la Run(Action) méthode pour instancier et exécuter la tâche en une seule opération. La méthode retourne l’objet Task qui représente la tâche.

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

public class Example
{
   public static void Main()
   {
      var list = new ConcurrentBag<string>();
      string[] dirNames = { ".", ".." };
      List<Task> tasks = new List<Task>();
      foreach (var dirName in dirNames) {
         Task t = Task.Run( () => { foreach(var path in Directory.GetFiles(dirName)) 
                                       list.Add(path); }  );
         tasks.Add(t);
      }
      Task.WaitAll(tasks.ToArray());
      foreach (Task t in tasks)
         Console.WriteLine("Task {0} Status: {1}", t.Id, t.Status);
         
      Console.WriteLine("Number of files read: {0}", list.Count);
   }
}
// The example displays output like the following:
//       Task 1 Status: RanToCompletion
//       Task 2 Status: RanToCompletion
//       Number of files read: 23
open System.Collections.Concurrent
open System.IO
open System.Threading.Tasks

let list = ConcurrentBag<string>()
let dirNames = [ "."; ".." ]
let tasks = ResizeArray()

for dirName in dirNames do
    let t =
        Task.Run(fun () ->
            for path in Directory.GetFiles dirName do
                list.Add path)

    tasks.Add t

tasks.ToArray() |> Task.WaitAll

for t in tasks do
    printfn $"Task {t.Id} Status: {t.Status}"

printfn $"Number of files read: {list.Count}"

// The example displays output like the following:
//       Task 1 Status: RanToCompletion
//       Task 2 Status: RanToCompletion
//       Number of files read: 23
Imports System.Collections.Concurrent
Imports System.Collections.Generic
Imports System.IO
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim list As New ConcurrentBag(Of String)()
      Dim dirNames() As String = { ".", ".." }
      Dim tasks As New List(Of Task)()
      For Each dirName In dirNames 
         Dim t As Task = Task.Run( Sub()
                                      For Each path In Directory.GetFiles(dirName) 
                                         list.Add(path)
                                      Next
                                   End Sub  )
         tasks.Add(t)
      Next
      Task.WaitAll(tasks.ToArray())
      For Each t In tasks
         Console.WriteLine("Task {0} Status: {1}", t.Id, t.Status)
      Next   
      Console.WriteLine("Number of files read: {0}", list.Count)
   End Sub
End Module
' The example displays output like the following:
'       Task 1 Status: RanToCompletion
'       Task 2 Status: RanToCompletion
'       Number of files read: 23

Remarques

Ce constructeur ne doit être utilisé que dans des scénarios avancés où il est nécessaire que la création et le démarrage de la tâche soient séparés.

Au lieu d’appeler ce constructeur, la façon la plus courante d’instancier un Task objet et de lancer une tâche consiste à appeler la méthode statique Task.Run(Action) ou .TaskFactory.StartNew(Action)

Si une tâche sans action est nécessaire uniquement pour que le consommateur d’une API ait quelque chose à attendre, un TaskCompletionSource<TResult> doit être utilisé.

Voir aussi

S’applique à

Task(Action, CancellationToken)

Source:
Task.cs
Source:
Task.cs
Source:
Task.cs

Initialise un nouveau Task avec l'action spécifiée et CancellationToken.

public:
 Task(Action ^ action, System::Threading::CancellationToken cancellationToken);
public Task (Action action, System.Threading.CancellationToken cancellationToken);
new System.Threading.Tasks.Task : Action * System.Threading.CancellationToken -> System.Threading.Tasks.Task
Public Sub New (action As Action, cancellationToken As CancellationToken)

Paramètres

action
Action

Délégué qui représente le code à exécuter dans la tâche.

cancellationToken
CancellationToken

Le CancellationToken que la nouvelle tâche observera.

Exceptions

Le CancellationToken fourni a déjà été supprimé.

L’argument action a la valeur null.

Exemples

L’exemple suivant appelle le Task(Action, CancellationToken) constructeur pour créer une tâche qui itère les fichiers dans le répertoire C :\Windows\System32. L’expression lambda appelle la Parallel.ForEach méthode pour ajouter des informations sur chaque fichier à un List<T> objet. Chaque tâche imbriquée détachée appelée par la Parallel.ForEach boucle vérifie l’état du jeton d’annulation et, si l’annulation est demandée, appelle la CancellationToken.ThrowIfCancellationRequested méthode. La CancellationToken.ThrowIfCancellationRequested méthode lève une OperationCanceledException exception qui est gérée dans un catch bloc lorsque le thread appelant appelle la Task.Wait méthode. La Start méthode est ensuite appelée pour démarrer la tâche.

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

public class Example
{
   public static async Task Main()
   {
      var tokenSource = new CancellationTokenSource();
      var token = tokenSource.Token;
      var files = new List<Tuple<string, string, long, DateTime>>();
      
      var t = new Task(() => { string dir = "C:\\Windows\\System32\\";
                               object obj = new Object();
                               if (Directory.Exists(dir)) {
                                  Parallel.ForEach(Directory.GetFiles(dir),
                                  f => {
                                          if (token.IsCancellationRequested)
                                             token.ThrowIfCancellationRequested();
                                          var fi = new FileInfo(f);
                                          lock(obj) {
                                             files.Add(Tuple.Create(fi.Name, fi.DirectoryName, fi.Length, fi.LastWriteTimeUtc));          
                                          }
                                     });
                                }
                              } , token);
      t.Start();
      tokenSource.Cancel();
      try {
         await t; 
         Console.WriteLine("Retrieved information for {0} files.", files.Count);
      }
      catch (AggregateException e) {
         Console.WriteLine("Exception messages:");
         foreach (var ie in e.InnerExceptions)
            Console.WriteLine("   {0}: {1}", ie.GetType().Name, ie.Message);

         Console.WriteLine("\nTask status: {0}", t.Status);       
      }
      finally {
         tokenSource.Dispose();
      }
   }
}
// The example displays the following output:
//       Exception messages:
//          TaskCanceledException: A task was canceled.
//       
//       Task status: Canceled
open System
open System.IO
open System.Threading
open System.Threading.Tasks

let main =
    task {
        use tokenSource = new CancellationTokenSource()
        let token = tokenSource.Token
        let files = ResizeArray()

        let t =
            new Task(
                (fun () ->
                    let dir = @"C:\Windows\System32\"
                    let obj = obj ()

                    if Directory.Exists dir then
                        Parallel.ForEach(
                            Directory.GetFiles dir,
                            fun f ->
                                if token.IsCancellationRequested then
                                    token.ThrowIfCancellationRequested()

                                let fi = FileInfo f
                                lock obj (fun () -> files.Add(fi.Name, fi.DirectoryName, fi.Length, fi.LastWriteTimeUtc))
                        )
                        |> ignore),
                token
            )

        t.Start()
        tokenSource.Cancel()

        try
            do! t
            printfn $"Retrieved information for {files.Count} files."

        with :? AggregateException as e ->
            printfn "Exception messages:"

            for ie in e.InnerExceptions do
                printfn $"   {ie.GetType().Name}: {ie.Message}"

            printfn $"Task status: {t.Status}"
    }

main.Wait()

// The example displays the following output:
//       Exception messages:
//          TaskCanceledException: A task was canceled.
//
//       Task status: Canceled
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 New Task(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)
      t.Start()
      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)       
      Finally
         tokenSource.Dispose()
      End Try
   End Sub
End Module
' The example displays the following output:
'       Exception messages:
'          TaskCanceledException: A task was canceled.
'       
'       Task status: Canceled

Remarques

Au lieu d’appeler ce constructeur, la façon la plus courante d’instancier un Task objet et de lancer une tâche consiste à appeler les méthodes statiques Task.Run(Action, CancellationToken) et TaskFactory.StartNew(Action, CancellationToken) . Le seul avantage offert par ce constructeur est qu’il permet de séparer l’instanciation d’objet de l’appel de tâche.

Pour plus d’informations, consultez Parallélisme des tâches (bibliothèque parallèle de tâches) et Annulation dans les threads managés.

S’applique à

Task(Action, TaskCreationOptions)

Source:
Task.cs
Source:
Task.cs
Source:
Task.cs

Initialise une nouvelle Task avec l'action et les options de création spécifiées.

public:
 Task(Action ^ action, System::Threading::Tasks::TaskCreationOptions creationOptions);
public Task (Action action, System.Threading.Tasks.TaskCreationOptions creationOptions);
new System.Threading.Tasks.Task : Action * System.Threading.Tasks.TaskCreationOptions -> System.Threading.Tasks.Task
Public Sub New (action As Action, creationOptions As TaskCreationOptions)

Paramètres

action
Action

Délégué qui représente le code à exécuter dans la tâche.

creationOptions
TaskCreationOptions

TaskCreationOptions utilisé pour personnaliser le comportement de la tâche.

Exceptions

L’argument action a la valeur null.

L'argument creationOptions spécifie une valeur non valide pour TaskCreationOptions.

Remarques

Au lieu d’appeler ce constructeur, la méthode la plus courante pour instancier un Task objet et lancer une tâche consiste à appeler la méthode statique TaskFactory.StartNew(Action, TaskCreationOptions) . Le seul avantage offert par ce constructeur est qu’il permet de séparer l’instanciation d’objet de l’appel de tâche.

S’applique à

Task(Action<Object>, Object)

Source:
Task.cs
Source:
Task.cs
Source:
Task.cs

Initialise un nouveau Task avec l'action et l'état spécifiés.

public:
 Task(Action<System::Object ^> ^ action, System::Object ^ state);
public Task (Action<object> action, object state);
public Task (Action<object?> action, object? state);
new System.Threading.Tasks.Task : Action<obj> * obj -> System.Threading.Tasks.Task
Public Sub New (action As Action(Of Object), state As Object)

Paramètres

action
Action<Object>

Délégué qui représente le code à exécuter dans la tâche.

state
Object

Objet représentant les données que l'action doit utiliser.

Exceptions

L’argument action a la valeur null.

Exemples

L’exemple suivant définit un tableau de mots de 6 lettres. Chaque mot est ensuite passé en tant qu’argument au constructeur, dont Action<T> le Task(Action<Object>, Object) délégué brouillera les caractères du mot, puis affiche le mot d’origine et sa version brouillée.

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

public class Example
{
   public static async Task 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);
      }
      await Task.WhenAll(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
open System
open System.Threading.Tasks

let main =
    task {
        let tasks = ResizeArray()
        let rnd = Random()
        let lockObj = obj ()

        let words6 =
            [ "reason"
              "editor"
              "rioter"
              "rental"
              "senior"
              "regain"
              "ordain"
              "rained" ]

        for word6 in words6 do
            let t =
                new Task(
                    (fun word ->
                        let chars = (string word).ToCharArray()
                        let order = Array.zeroCreate<double> chars.Length

                        lock lockObj (fun () ->
                            for i = 0 to order.Length - 1 do
                                order[i] <- rnd.NextDouble())

                        Array.Sort(order, chars)
                        printfn $"{word} --> {new String(chars)}"),
                    word6
                )

            t.Start()
            tasks.Add t

        do! tasks.ToArray() |> Task.WhenAll
    }

main.Wait()

// The example displays output like the following:
//    regain --> irnaeg
//    ordain --> rioadn
//    reason --> soearn
//    rained --> rinade
//    rioter --> itrore
//    senior --> norise
//    rental --> atnerl
//    editor --> oteird
Imports System.Collections.Generic
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim tasks As New List(Of Task)()
      Dim rnd As New Random()
      Dim lockObj As New Object()
      Dim words6() As String = { "reason", "editor", "rioter", "rental",
                                 "senior", "regain", "ordain", "rained" }

      For Each word6 in words6
         Dim t As New Task( Sub(word)
                               Dim chars() As Char = word.ToString().ToCharArray()
                               Dim order(chars.Length - 1) As Double
                               SyncLock lockObj
                                  For ctr As Integer = 0 To order.Length - 1
                                     order(ctr) = rnd.NextDouble()
                                  Next
                               End SyncLock
                               Array.Sort(order, chars)
                               Console.WriteLine("{0} --> {1}", word,
                                                 New String(chars))
                            End Sub, word6)
         t.Start()
         tasks.Add(t)
      Next
      Task.WaitAll(tasks.ToArray())
   End Sub
End Module
' The example displays output like the following:
'       regain --> irnaeg
'       ordain --> rioadn
'       reason --> soearn
'       rained --> rinade
'       rioter --> itrore
'       senior --> norise
'       rental --> atnerl
'       editor --> oteird

Remarques

Au lieu d’appeler ce constructeur, la méthode la plus courante pour instancier un Task objet et lancer une tâche consiste à appeler la méthode statique TaskFactory.StartNew(Action<Object>, Object) . Le seul avantage offert par ce constructeur est qu’il permet de séparer l’instanciation d’objet de l’appel de tâche.

Voir aussi

S’applique à

Task(Action, CancellationToken, TaskCreationOptions)

Source:
Task.cs
Source:
Task.cs
Source:
Task.cs

Initialise une nouvelle Task avec l'action et les options de création spécifiées.

public:
 Task(Action ^ action, System::Threading::CancellationToken cancellationToken, System::Threading::Tasks::TaskCreationOptions creationOptions);
public Task (Action action, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskCreationOptions creationOptions);
new System.Threading.Tasks.Task : Action * System.Threading.CancellationToken * System.Threading.Tasks.TaskCreationOptions -> System.Threading.Tasks.Task
Public Sub New (action As Action, cancellationToken As CancellationToken, creationOptions As TaskCreationOptions)

Paramètres

action
Action

Délégué qui représente le code à exécuter dans la tâche.

cancellationToken
CancellationToken

Le CancellationToken que la nouvelle tâche observera.

creationOptions
TaskCreationOptions

TaskCreationOptions utilisé pour personnaliser le comportement de la tâche.

Exceptions

Le CancellationTokenSource qui a créé cancellationToken a déjà été supprimé.

L’argument action a la valeur null.

L'argument creationOptions spécifie une valeur non valide pour TaskCreationOptions.

Remarques

Au lieu d’appeler ce constructeur, la méthode la plus courante pour instancier un Task objet et lancer une tâche consiste à appeler la méthode statique TaskFactory.StartNew(Action, CancellationToken, TaskCreationOptions, TaskScheduler) . Le seul avantage offert par ce constructeur est qu’il permet de séparer l’instanciation d’objet de l’appel de tâche.

Pour plus d’informations, consultez Parallélisme des tâches (bibliothèque parallèle de tâches) et Annulation de tâches.

S’applique à

Task(Action<Object>, Object, CancellationToken)

Source:
Task.cs
Source:
Task.cs
Source:
Task.cs

Initialise un nouveau Task avec l’action, l’état et CancellationToken.

public:
 Task(Action<System::Object ^> ^ action, System::Object ^ state, System::Threading::CancellationToken cancellationToken);
public Task (Action<object> action, object state, System.Threading.CancellationToken cancellationToken);
public Task (Action<object?> action, object? state, System.Threading.CancellationToken cancellationToken);
new System.Threading.Tasks.Task : Action<obj> * obj * System.Threading.CancellationToken -> System.Threading.Tasks.Task
Public Sub New (action As Action(Of Object), state As Object, cancellationToken As CancellationToken)

Paramètres

action
Action<Object>

Délégué qui représente le code à exécuter dans la tâche.

state
Object

Objet représentant les données que l'action doit utiliser.

cancellationToken
CancellationToken

Le CancellationToken que la nouvelle tâche observera.

Exceptions

Le CancellationTokenSource qui a créé cancellationToken a déjà été supprimé.

L’argument action a la valeur null.

Remarques

Au lieu d’appeler ce constructeur, la méthode la plus courante pour instancier un Task objet et lancer une tâche consiste à appeler la méthode statique TaskFactory.StartNew(Action<Object>, Object, CancellationToken) . Le seul avantage offert par ce constructeur est qu’il permet de séparer l’instanciation d’objet de l’appel de tâche.

S’applique à

Task(Action<Object>, Object, TaskCreationOptions)

Source:
Task.cs
Source:
Task.cs
Source:
Task.cs

Initialise une nouvelle Task avec l'action, l'état et les options spécifiés.

public:
 Task(Action<System::Object ^> ^ action, System::Object ^ state, System::Threading::Tasks::TaskCreationOptions creationOptions);
public Task (Action<object> action, object state, System.Threading.Tasks.TaskCreationOptions creationOptions);
public Task (Action<object?> action, object? state, System.Threading.Tasks.TaskCreationOptions creationOptions);
new System.Threading.Tasks.Task : Action<obj> * obj * System.Threading.Tasks.TaskCreationOptions -> System.Threading.Tasks.Task
Public Sub New (action As Action(Of Object), state As Object, creationOptions As TaskCreationOptions)

Paramètres

action
Action<Object>

Délégué qui représente le code à exécuter dans la tâche.

state
Object

Objet représentant les données que l'action doit utiliser.

creationOptions
TaskCreationOptions

TaskCreationOptions utilisé pour personnaliser le comportement de la tâche.

Exceptions

L’argument action a la valeur null.

L'argument creationOptions spécifie une valeur non valide pour TaskCreationOptions.

Remarques

Au lieu d’appeler ce constructeur, la méthode la plus courante pour instancier un Task objet et lancer une tâche consiste à appeler la méthode statique TaskFactory.StartNew(Action<Object>, Object, TaskCreationOptions) . Le seul avantage offert par ce constructeur est qu’il permet de séparer l’instanciation d’objet de l’appel de tâche.

S’applique à

Task(Action<Object>, Object, CancellationToken, TaskCreationOptions)

Source:
Task.cs
Source:
Task.cs
Source:
Task.cs

Initialise une nouvelle Task avec l'action, l'état et les options spécifiés.

public:
 Task(Action<System::Object ^> ^ action, System::Object ^ state, System::Threading::CancellationToken cancellationToken, System::Threading::Tasks::TaskCreationOptions creationOptions);
public Task (Action<object> action, object state, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskCreationOptions creationOptions);
public Task (Action<object?> action, object? state, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskCreationOptions creationOptions);
new System.Threading.Tasks.Task : Action<obj> * obj * System.Threading.CancellationToken * System.Threading.Tasks.TaskCreationOptions -> System.Threading.Tasks.Task
Public Sub New (action As Action(Of Object), state As Object, cancellationToken As CancellationToken, creationOptions As TaskCreationOptions)

Paramètres

action
Action<Object>

Délégué qui représente le code à exécuter dans la tâche.

state
Object

Objet représentant les données que l'action doit utiliser.

cancellationToken
CancellationToken

Le CancellationToken que la nouvelle tâche observera.

creationOptions
TaskCreationOptions

TaskCreationOptions utilisé pour personnaliser le comportement de la tâche.

Exceptions

Le CancellationTokenSource qui a créé cancellationToken a déjà été supprimé.

L’argument action a la valeur null.

L'argument creationOptions spécifie une valeur non valide pour TaskCreationOptions.

Remarques

Au lieu d’appeler ce constructeur, la méthode la plus courante pour instancier un Task objet et lancer une tâche consiste à appeler la méthode statique TaskFactory.StartNew(Action<Object>, Object, CancellationToken, TaskCreationOptions, TaskScheduler) . Le seul avantage offert par ce constructeur est qu’il permet de séparer l’instanciation d’objet de l’appel de tâche.

S’applique à