TaskFactory.StartNew Metodo

Definizione

Crea e avvia un'attività.

Overload

StartNew(Action<Object>, Object, CancellationToken, TaskCreationOptions, TaskScheduler)

Crea e avvia un'attività per il delegato di azione, lo stato, il token di annullamento, le opzioni di creazione e l'utilità di pianificazione dell'attività specificati.

StartNew(Action, CancellationToken, TaskCreationOptions, TaskScheduler)

Crea e avvia un'attività per il delegato di azione, il token di annullamento, le opzioni di creazione e lo stato specificati.

StartNew(Action<Object>, Object, TaskCreationOptions)

Crea e avvia un'attività per il delegato di azione, lo stato e le opzioni di creazione specificati.

StartNew(Action<Object>, Object, CancellationToken)

Crea e avvia un'attività per il delegato di azione, lo stato e il token di annullamento specificati.

StartNew(Action, CancellationToken)

Crea e avvia un'attività per il delegato di azione e il token di annullamento specificati.

StartNew(Action, TaskCreationOptions)

Crea e avvia un'attività per le opzioni di creazione e delegato di azione specificate.

StartNew(Action)

Crea e avvia un'attività per il delegato di azione specificato.

StartNew(Action<Object>, Object)

Crea e avvia un'attività per il delegato e lo stato dell'azione specificati.

StartNew<TResult>(Func<TResult>, CancellationToken, TaskCreationOptions, TaskScheduler)

Crea e avvia un'attività di tipo TResult per il delegato di funzione specificato, il token di annullamento, le opzioni di creazione e l'utilità di pianificazione delle attività.

StartNew<TResult>(Func<TResult>)

Crea e avvia un'attività di tipo TResult per il delegato della funzione specificato.

StartNew<TResult>(Func<Object,TResult>, Object)

Crea e avvia un'attività di tipo TResult per il delegato e lo stato della funzione specificati.

StartNew<TResult>(Func<TResult>, CancellationToken)

Crea e avvia un'attività di tipo TResult per il delegato della funzione e il token di annullamento specificati.

StartNew<TResult>(Func<TResult>, TaskCreationOptions)

Crea e avvia un'attività di tipo TResult per il delegato della funzione e le opzioni di creazione specificati.

StartNew<TResult>(Func<Object,TResult>, Object, CancellationToken)

Crea e avvia un'attività di tipo TResult per il delegato di funzione, lo stato e il token di annullamento specificati.

StartNew<TResult>(Func<Object,TResult>, Object, TaskCreationOptions)

Crea e avvia un'attività di tipo TResult per il delegato di funzione, lo stato e le opzioni di creazione specificati.

StartNew<TResult>(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions, TaskScheduler)

Crea e avvia un'attività di tipo TResult per il delegato di funzione, lo stato, il token di annullamento, le opzioni di creazione e l'utilità di pianificazione delle attività specificati.

Commenti

A partire dalla .NET Framework 4.5, il Task.Run metodo è il modo consigliato per avviare un'attività associata a calcolo. Usare il StartNew metodo solo quando è necessario un controllo con granularità fine per un'attività associata a calcolo a esecuzione prolungata. Sono inclusi gli scenari in cui si vuole controllare quanto segue:

  • Opzioni di creazione delle attività. Le attività create dal Task.Run metodo per impostazione predefinita vengono create con l'opzione TaskCreationOptions.DenyChildAttach . Per eseguire l'override di questo comportamento o per fornire altre TaskCreationOptions opzioni, chiamare un StartNew overload.

  • Passaggio di parametri. Gli overload del Task.Run metodo non consentono di passare un parametro al delegato dell'attività. Overload del StartNew metodo .

  • Utilità di pianificazione. Gli overload del Task.Run metodo usano l'utilità di pianificazione delle attività predefinita. Per controllare l'utilità di pianificazione dell'attività, chiamare un StartNew overload con un scheduler parametro . Per altre informazioni, vedere TaskScheduler.

StartNew(Action<Object>, Object, CancellationToken, TaskCreationOptions, TaskScheduler)

Crea e avvia un'attività per il delegato di azione, lo stato, il token di annullamento, le opzioni di creazione e l'utilità di pianificazione dell'attività specificati.

public:
 System::Threading::Tasks::Task ^ StartNew(Action<System::Object ^> ^ action, System::Object ^ state, System::Threading::CancellationToken cancellationToken, System::Threading::Tasks::TaskCreationOptions creationOptions, System::Threading::Tasks::TaskScheduler ^ scheduler);
public System.Threading.Tasks.Task StartNew (Action<object> action, object state, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskCreationOptions creationOptions, System.Threading.Tasks.TaskScheduler scheduler);
public System.Threading.Tasks.Task StartNew (Action<object?> action, object? state, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskCreationOptions creationOptions, System.Threading.Tasks.TaskScheduler scheduler);
member this.StartNew : Action<obj> * obj * System.Threading.CancellationToken * System.Threading.Tasks.TaskCreationOptions * System.Threading.Tasks.TaskScheduler -> System.Threading.Tasks.Task
Public Function StartNew (action As Action(Of Object), state As Object, cancellationToken As CancellationToken, creationOptions As TaskCreationOptions, scheduler As TaskScheduler) As Task

Parametri

action
Action<Object>

Delegato dell'azione da eseguire in modo asincrono.

state
Object

Oggetto contenente i dati che devono essere usati dal delegato action.

cancellationToken
CancellationToken

Token di annullamento che verrà assegnato alla nuova attività.

creationOptions
TaskCreationOptions

Uno dei valori di enumerazione che controlla il comportamento dell'attività creata.

scheduler
TaskScheduler

Utilità di pianificazione usata per pianificare l'attività creata.

Restituisce

Task

Attività avviata.

Eccezioni

Provider CancellationToken già eliminato.

action è null.

-oppure-

scheduler è null.

L'argomento creationOptions specifica un valore TaskCreationOptions non valido. Per ulteriori informazioni, vedere la sezione Osservazioni di FromAsync(Func<AsyncCallback,Object,IAsyncResult>, Action<IAsyncResult>, Object, TaskCreationOptions).

Commenti

La chiamata a StartNew equivale funzionalmente alla creazione di un'attività usando uno dei relativi costruttori e quindi chiamando Start per pianificarla per l'esecuzione.

A partire dalla .NET Framework 4.5, è possibile usare il Run metodo con un Action oggetto come modo rapido per chiamare StartNew con i parametri predefiniti. Per altre informazioni ed esempi di codice, vedere Task.Run vs Task.Factory.StartNew nel blog Di programmazione parallela con .NET.

Vedi anche

Si applica a

StartNew(Action, CancellationToken, TaskCreationOptions, TaskScheduler)

Crea e avvia un'attività per il delegato di azione, il token di annullamento, le opzioni di creazione e lo stato specificati.

public:
 System::Threading::Tasks::Task ^ StartNew(Action ^ action, System::Threading::CancellationToken cancellationToken, System::Threading::Tasks::TaskCreationOptions creationOptions, System::Threading::Tasks::TaskScheduler ^ scheduler);
public System.Threading.Tasks.Task StartNew (Action action, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskCreationOptions creationOptions, System.Threading.Tasks.TaskScheduler scheduler);
member this.StartNew : Action * System.Threading.CancellationToken * System.Threading.Tasks.TaskCreationOptions * System.Threading.Tasks.TaskScheduler -> System.Threading.Tasks.Task
Public Function StartNew (action As Action, cancellationToken As CancellationToken, creationOptions As TaskCreationOptions, scheduler As TaskScheduler) As Task

Parametri

action
Action

Delegato dell'azione da eseguire in modo asincrono.

cancellationToken
CancellationToken

Token di annullamento che verrà assegnato alla nuova attività.

creationOptions
TaskCreationOptions

Uno dei valori di enumerazione che controlla il comportamento dell'attività creata.

scheduler
TaskScheduler

Utilità di pianificazione usata per pianificare l'attività creata.

Restituisce

Task

Attività avviata.

Eccezioni

Provider CancellationToken già eliminato.

action è null.

-oppure- scheduler è null.

creationOptions specifica un valore TaskCreationOptions non valido. Per ulteriori informazioni, vedere la sezione Osservazioni di FromAsync(Func<AsyncCallback,Object,IAsyncResult>, Action<IAsyncResult>, Object, TaskCreationOptions).

Commenti

La chiamata a StartNew equivale funzionalmente alla creazione di un'attività usando uno dei relativi costruttori e quindi chiamando Start per pianificarla per l'esecuzione.

A partire dalla .NET Framework 4.5, è possibile usare il Run metodo con un Action oggetto come modo rapido per chiamare StartNew con i parametri predefiniti. Per altre informazioni ed esempi di codice, vedere Task.Run vs Task.Factory.StartNew nel blog Di programmazione parallela con .NET.

Vedi anche

Si applica a

StartNew(Action<Object>, Object, TaskCreationOptions)

Crea e avvia un'attività per il delegato di azione, lo stato e le opzioni di creazione specificati.

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

Parametri

action
Action<Object>

Delegato dell'azione da eseguire in modo asincrono.

state
Object

Oggetto contenente i dati che devono essere usati dal delegato action.

creationOptions
TaskCreationOptions

Uno dei valori di enumerazione che controlla il comportamento dell'attività creata.

Restituisce

Task

Attività avviata.

Eccezioni

action è null.

creationOptions specifica un valore TaskCreationOptions non valido.

Commenti

La chiamata a StartNew equivale funzionalmente alla creazione di un'attività usando uno dei relativi costruttori e quindi chiamando Start per pianificarla per l'esecuzione.

A partire dalla .NET Framework 4.5, è possibile usare il Run metodo con un Action oggetto come modo rapido per chiamare StartNew con i parametri predefiniti. Per altre informazioni ed esempi di codice, vedere Task.Run vs Task.Factory.StartNew nel blog Di programmazione parallela con .NET.

Vedi anche

Si applica a

StartNew(Action<Object>, Object, CancellationToken)

Crea e avvia un'attività per il delegato di azione, lo stato e il token di annullamento specificati.

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

Parametri

action
Action<Object>

Delegato dell'azione da eseguire in modo asincrono.

state
Object

Oggetto contenente i dati che devono essere usati dal delegato action.

cancellationToken
CancellationToken

Token di annullamento che verrà assegnato alla nuova attività.

Restituisce

Task

Attività avviata.

Eccezioni

Provider CancellationToken già eliminato.

action è null.

Esempio

Nell'esempio seguente viene definita una matrice di 6 parole. Ogni parola viene quindi passata a un Action<T> delegato, che esegue lo scramble della parola e visualizza la parola originale e la relativa versione scrambled.

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

public class Example
{
   public static void Main()
   {
      CancellationTokenSource cts = new CancellationTokenSource();
      CancellationToken token = cts.Token;
      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)
         tasks.Add(Task.Factory.StartNew( (word) => { Char[] chars = word.ToString().ToCharArray();
                                                      double[] order = new double[chars.Length];
                                                      token.ThrowIfCancellationRequested();
                                                      bool wasZero = false;
                                                      lock (lockObj) {
                                                         for (int ctr = 0; ctr < order.Length; ctr++) {
                                                             order[ctr] = rnd.NextDouble();
                                                             if (order[ctr] == 0) {
                                                                if (! wasZero) {
                                                                   wasZero = true;
                                                                }
                                                                else {
                                                                   cts.Cancel();
                                                                }
                                                             }
                                                         }
                                                      }
                                                      token.ThrowIfCancellationRequested();
                                                      Array.Sort(order, chars);
                                                      Console.WriteLine("{0} --> {1}", word,
                                                                        new String(chars));
                                                    }, word6, token));

      try {
         Task.WaitAll(tasks.ToArray());
      }
      catch (AggregateException e) {
         foreach (var ie in e.InnerExceptions) {
            if (ie is OperationCanceledException) {
               Console.WriteLine("The word scrambling operation has been cancelled.");
               break;
            }
            else {
               Console.WriteLine(ie.GetType().Name + ": " + ie.Message);
            }
         }
      }
      finally {
         cts.Dispose();
      }
   }
}
// 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
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim cts As New CancellationTokenSource()
      Dim token As CancellationToken = cts.Token
      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
         tasks.Add(Task.Factory.StartNew( Sub(word)
                                              Dim chars() As Char = word.ToString().ToCharArray()
                                              Dim order(chars.Length - 1) As Double
                                              Dim wasZero As Boolean = False
                                              SyncLock lockObj
                                                 For ctr As Integer = 0 To order.Length - 1
                                                    order(ctr) = rnd.NextDouble()
                                                    If order(ctr) = 0 Then
                                                       If Not wasZero Then
                                                          wasZero = True
                                                       Else
                                                          cts.Cancel()
                                                       End If
                                                    End If
                                                 Next
                                              End SyncLock
                                              token.ThrowIfCancellationRequested()
                                              Array.Sort(order, chars)
                                              Console.WriteLine("{0} --> {1}", word,
                                                                new String(chars))
                                          End Sub, word6))
      Next
      Try
         Task.WaitAll(tasks.ToArray())
      Catch e As AggregateException
         For Each ie In e.InnerExceptions
            If TypeOf ie Is OperationCanceledException
               Console.WriteLine("The word scrambling operation has been cancelled.")
               Exit For
            Else
               Console.WriteLine(ie.GetType().Name + ": " + ie.Message)
            End If
         Next
      Finally
         cts.Dispose()
      End Try
   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

Si noti che l'esempio inizializza un singolo generatore di numeri casuali, protetto da un blocco. Per la necessità di un blocco, vedere l'argomento relativo alla classe System.Random e alla thread safety Random . Per gestire la possibilità di danneggiamento del generatore di numeri casuali, un token di annullamento viene passato all'attività. Se due numeri casuali sono uguali a zero, il metodo presuppone che il generatore di numeri casuali sia danneggiato e imposti il token di annullamento. Prima di ordinare la chars matrice contenente i sei caratteri di una parola, il metodo chiama il CancellationToken.ThrowIfCancellationRequested metodo per generare un'eccezione OperationCanceledException se il token è stato annullato.

Commenti

La chiamata a StartNew equivale funzionalmente alla creazione di un'attività usando uno dei relativi costruttori e quindi chiamando Start per pianificarla per l'esecuzione.

A partire dalla .NET Framework 4.5, è possibile usare il Run metodo con un Action oggetto come modo rapido per chiamare StartNew con i parametri predefiniti. Per altre informazioni ed esempi di codice, vedere Task.Run vs Task.Factory.StartNew nel blog Di programmazione parallela con .NET.

Vedi anche

Si applica a

StartNew(Action, CancellationToken)

Crea e avvia un'attività per il delegato di azione e il token di annullamento specificati.

public:
 System::Threading::Tasks::Task ^ StartNew(Action ^ action, System::Threading::CancellationToken cancellationToken);
public System.Threading.Tasks.Task StartNew (Action action, System.Threading.CancellationToken cancellationToken);
member this.StartNew : Action * System.Threading.CancellationToken -> System.Threading.Tasks.Task
Public Function StartNew (action As Action, cancellationToken As CancellationToken) As Task

Parametri

action
Action

Delegato dell'azione da eseguire in modo asincrono.

cancellationToken
CancellationToken

Token di annullamento che verrà assegnato alla nuova attività.

Restituisce

Task

Attività avviata.

Eccezioni

Provider CancellationToken già eliminato.

action è null.

Esempio

Nell'esempio seguente viene chiamato il StartNew(Action, CancellationToken) metodo per creare un'attività che esegue l'iterazione dei file nella directory C:\Windows\System32. L'espressione lambda chiama il Parallel.ForEach metodo per aggiungere informazioni su ogni file a un List<T> oggetto . Ogni attività annidata scollegata richiamata dal Parallel.ForEach ciclo controlla lo stato del token di annullamento e, se viene richiesto l'annullamento, chiama il CancellationToken.ThrowIfCancellationRequested metodo . Il CancellationToken.ThrowIfCancellationRequested metodo genera un'eccezione OperationCanceledException gestita in un catch blocco quando il thread chiamante chiama il Task.Wait metodo .

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

public class Example
{
   public static void Main()
   {
      var tokenSource = new CancellationTokenSource();
      var token = tokenSource.Token;
      var files = new List<Tuple<string, string, long, DateTime>>();

      var t = Task.Factory.StartNew( () => { 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);
      tokenSource.Cancel();
      try {
         t.Wait(); 
         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
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.Factory.StartNew( 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)       
      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

Commenti

La chiamata StartNew è funzionalmente equivalente alla creazione di un'attività usando uno dei relativi costruttori e quindi chiamando Start per pianificarla per l'esecuzione.

A partire dalla .NET Framework 4.5, è possibile usare il Task.Run(Action, CancellationToken) metodo come metodo rapido per chiamare StartNew(Action, CancellationToken) con i parametri predefiniti. Si noti, tuttavia, che esiste una differenza di comportamento tra i due metodi relativi a : Task.Run(Action, CancellationToken) per impostazione predefinita non consente alle attività figlio di iniziare con l'opzione TaskCreationOptions.AttachedToParent di collegarsi all'istanza corrente Task , mentre StartNew(Action, CancellationToken) lo fa. Per altre informazioni ed esempi di codice, vedere Task.Run vs Task.Factory.StartNew nel blog Di programmazione parallela con .NET.

Vedi anche

Si applica a

StartNew(Action, TaskCreationOptions)

Crea e avvia un'attività per le opzioni di creazione e delegato di azione specificate.

public:
 System::Threading::Tasks::Task ^ StartNew(Action ^ action, System::Threading::Tasks::TaskCreationOptions creationOptions);
public System.Threading.Tasks.Task StartNew (Action action, System.Threading.Tasks.TaskCreationOptions creationOptions);
member this.StartNew : Action * System.Threading.Tasks.TaskCreationOptions -> System.Threading.Tasks.Task
Public Function StartNew (action As Action, creationOptions As TaskCreationOptions) As Task

Parametri

action
Action

Delegato dell'azione da eseguire in modo asincrono.

creationOptions
TaskCreationOptions

Uno dei valori di enumerazione che controlla il comportamento dell'attività creata.

Restituisce

Task

Attività avviata.

Eccezioni

action è null.

creationOptions specifica un valore TaskCreationOptions non valido.

Commenti

La chiamata a StartNew equivale funzionalmente alla creazione di un'attività usando uno dei relativi costruttori e quindi chiamando Start per pianificarla per l'esecuzione.

A partire dalla .NET Framework 4.5, è possibile usare il Run metodo con un Action oggetto come modo rapido per chiamare StartNew con i parametri predefiniti. Per altre informazioni ed esempi di codice, vedere Task.Run vs Task.Factory.StartNew nel blog Di programmazione parallela con .NET.

Vedi anche

Si applica a

StartNew(Action)

Crea e avvia un'attività per il delegato di azione specificato.

public:
 System::Threading::Tasks::Task ^ StartNew(Action ^ action);
public System.Threading.Tasks.Task StartNew (Action action);
member this.StartNew : Action -> System.Threading.Tasks.Task
Public Function StartNew (action As Action) As Task

Parametri

action
Action

Delegato dell'azione da eseguire in modo asincrono.

Restituisce

Task

Attività avviata.

Eccezioni

Il valore dell'argomento action è null.

Esempio

Nell'esempio seguente viene utilizzato il StartNew(Action) metodo per richiamare ripetutamente un Action delegato che genera un numero casuale, lo interpreta come punto di codice Unicode, lo converte in un'unità di codice con codifica UTF16 e visualizza informazioni sul carattere o i caratteri risultanti.

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

public class Example
{
   public static void Main()
   {
      Random rnd = new Random();
      List<Task> tasks  = new List<Task>();
      // Execute the task 10 times.
      for (int ctr = 1; ctr <= 9; ctr++) {
         tasks.Add(Task.Factory.StartNew( () => {
                                            int utf32 = 0;
                                            lock(rnd) {
                                               // Get UTF32 value.
                                               utf32 = rnd.Next(0, 0xE01F0);
                                            }
                                            // Convert it to a UTF16-encoded character.
                                            string utf16 = Char.ConvertFromUtf32(utf32);
                                            // Display information about the character.
                                            Console.WriteLine("0x{0:X8} --> '{1,2}' ({2})", 
                                                              utf32, utf16, ShowHex(utf16));
                                         }));                           
      }
      Task.WaitAll(tasks.ToArray()); 
   }

   private static string ShowHex(string value)
   {
      string hexString = null;
      // Handle only non-control characters.
      if (! Char.IsControl(value, 0)) {
         foreach (var ch in value)
            hexString += $"0x{(ushort)ch:X} ";
      }   
      return hexString.Trim();
   }
}
// The example displays the following output:
//       0x00097103 --> '򗄃' (0x55836 0x56579)
//       0x000A98A1 --> '򩢡' (0x55910 0x56481)
//       0x00050002 --> '񐀂' (0x55552 0x56322)
//       0x0000FEF1 --> 'ﻱ' (0x65265)
//       0x0008BC0A --> '򋰊' (0x55791 0x56330)
//       0x000860EA --> '򆃪' (0x55768 0x56554)
//       0x0009AC5A --> '򚱚' (0x55851 0x56410)
//       0x00053320 --> '񓌠' (0x55564 0x57120)
//       0x000874EF --> '򇓯' (0x55773 0x56559)
Imports System.Collections.Generic
Imports System.Threading.Tasks

Public Module Example
   Public Sub Main()
      Dim rnd As New Random()
      Dim tasks As New List(Of Task)
      ' Execute the task 10 times.
      For ctr As Integer = 1 To 9
         tasks.Add(Task.Factory.StartNew(Sub()
                                            Dim utf32 As Integer
                                            SyncLock(rnd)
                                               ' Get UTF32 value.
                                               utf32 = rnd.Next(0, &hE01F0)
                                            End SyncLock
                                            ' Convert it to a UTF16-encoded character.
                                            Dim utf16 As String = Char.ConvertFromUtf32(utf32)
                                            ' Display information about the character.
                                            Console.WriteLine("0x{0:X8} --> '{1,2}' ({2})", 
                                                              utf32, utf16, ShowHex(utf16))
                                         End Sub))                           
      Next
      Task.WaitAll(tasks.ToArray()) 
   End Sub
   
   Private Function ShowHex(value As String) As String
      Dim hexString As String = Nothing
      ' Handle only non-control characters.
      If Not Char.IsControl(value, 0) Then
         For Each ch In value
            hexString += String.Format("0x{0} ", Convert.ToUInt16(ch))
         Next
      End If   
      Return hexString.Trim()
   End Function
End Module
' The example displays output similar to the following:
'       0x00097103 --> '򗄃' (0x55836 0x56579)
'       0x000A98A1 --> '򩢡' (0x55910 0x56481)
'       0x00050002 --> '񐀂' (0x55552 0x56322)
'       0x0000FEF1 --> 'ﻱ' (0x65265)
'       0x0008BC0A --> '򋰊' (0x55791 0x56330)
'       0x000860EA --> '򆃪' (0x55768 0x56554)
'       0x0009AC5A --> '򚱚' (0x55851 0x56410)
'       0x00053320 --> '񓌠' (0x55564 0x57120)
'       0x000874EF --> '򇓯' (0x55773 0x56559)

Commenti

La chiamata StartNew è funzionalmente equivalente alla creazione di un'attività usando uno dei relativi costruttori e quindi chiamando il Task.Start metodo per pianificare l'attività per l'esecuzione.

A partire dalla .NET Framework 4.5, è possibile usare il Task.Run(Action) metodo come metodo rapido per chiamare StartNew(Action) con i parametri predefiniti. Si noti, tuttavia, che esiste una differenza di comportamento tra i due metodi relativi a : Task.Run(Action) per impostazione predefinita non consente alle attività figlio di iniziare con l'opzione TaskCreationOptions.AttachedToParent di collegarsi all'istanza corrente Task , mentre StartNew(Action) lo fa. Per altre informazioni ed esempi di codice, vedere Task.Run vs Task.Factory.StartNew nel blog Di programmazione parallela con .NET.

Vedi anche

Si applica a

StartNew(Action<Object>, Object)

Crea e avvia un'attività per il delegato e lo stato dell'azione specificati.

public:
 System::Threading::Tasks::Task ^ StartNew(Action<System::Object ^> ^ action, System::Object ^ state);
public System.Threading.Tasks.Task StartNew (Action<object> action, object state);
public System.Threading.Tasks.Task StartNew (Action<object?> action, object? state);
member this.StartNew : Action<obj> * obj -> System.Threading.Tasks.Task
Public Function StartNew (action As Action(Of Object), state As Object) As Task

Parametri

action
Action<Object>

Delegato dell'azione da eseguire in modo asincrono.

state
Object

Oggetto contenente i dati che devono essere usati dal delegato action.

Restituisce

Task

Attività avviata.

Eccezioni

Il valore dell'argomento action è null.

Esempio

Nell'esempio seguente viene definita una matrice di 6 parole. Ogni parola viene quindi passata a un Action<T> delegato, che esegue lo scramble della parola e visualizza la parola originale e la relativa versione scrambled.

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)
         tasks.Add(Task.Factory.StartNew( (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));

      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
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
         tasks.Add(Task.Factory.StartNew( 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))
      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

Si noti che l'esempio inizializza un singolo generatore di numeri casuali, protetto da un blocco. Per la necessità di un blocco, vedere l'argomento relativo alla classe System.Random e alla thread safety Random .

Commenti

La chiamata StartNew è funzionalmente equivalente alla creazione di un Task oggetto usando uno dei relativi costruttori e quindi alla chiamata del metodo per pianificarla per l'esecuzione Start .

A partire dalla .NET Framework 4.5, è possibile usare il Run metodo con un Action oggetto come modo rapido per chiamare StartNew con i parametri predefiniti. Per altre informazioni ed esempi di codice, vedere Task.Run vs Task.Factory.StartNew nel blog Di programmazione parallela con .NET.

Vedi anche

Si applica a

StartNew<TResult>(Func<TResult>, CancellationToken, TaskCreationOptions, TaskScheduler)

Crea e avvia un'attività di tipo TResult per il delegato di funzione specificato, il token di annullamento, le opzioni di creazione e l'utilità di pianificazione delle attività.

public:
generic <typename TResult>
 System::Threading::Tasks::Task<TResult> ^ StartNew(Func<TResult> ^ function, System::Threading::CancellationToken cancellationToken, System::Threading::Tasks::TaskCreationOptions creationOptions, System::Threading::Tasks::TaskScheduler ^ scheduler);
public System.Threading.Tasks.Task<TResult> StartNew<TResult> (Func<TResult> function, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskCreationOptions creationOptions, System.Threading.Tasks.TaskScheduler scheduler);
member this.StartNew : Func<'Result> * System.Threading.CancellationToken * System.Threading.Tasks.TaskCreationOptions * System.Threading.Tasks.TaskScheduler -> System.Threading.Tasks.Task<'Result>
Public Function StartNew(Of TResult) (function As Func(Of TResult), cancellationToken As CancellationToken, creationOptions As TaskCreationOptions, scheduler As TaskScheduler) As Task(Of TResult)

Parametri di tipo

TResult

Tipo del risultato disponibile tramite l'attività.

Parametri

function
Func<TResult>

Delegato della funzione che restituisce il risultato futuro da rendere disponibile tramite l'attività.

cancellationToken
CancellationToken

Token di annullamento che verrà assegnato alla nuova attività.

creationOptions
TaskCreationOptions

Uno dei valori di enumerazione che controlla il comportamento dell'attività creata.

scheduler
TaskScheduler

Utilità di pianificazione usata per pianificare l'attività creata.

Restituisce

Task<TResult>

Attività avviata.

Eccezioni

Provider CancellationToken già eliminato.

function è null.

-oppure- scheduler è null.

creationOptions specifica un valore TaskCreationOptions non valido. Per ulteriori informazioni, vedere la sezione Osservazioni di FromAsync(Func<AsyncCallback,Object,IAsyncResult>, Action<IAsyncResult>, Object, TaskCreationOptions).

Commenti

La chiamata a StartNew equivale in modo funzionale alla creazione di un Task<TResult> oggetto usando uno dei relativi costruttori e quindi chiamando Start per pianificarla per l'esecuzione.

A partire dalla .NET Framework 4.5, è possibile usare il Run metodo con un Action oggetto come modo rapido per chiamare StartNew con parametri predefiniti. Per altre informazioni ed esempi di codice, vedere la voce Task.Run vs. Task.Factory.StartNew nel blog Programmazione parallela con .NET.

Vedi anche

Si applica a

StartNew<TResult>(Func<TResult>)

Crea e avvia un'attività di tipo TResult per il delegato della funzione specificato.

public:
generic <typename TResult>
 System::Threading::Tasks::Task<TResult> ^ StartNew(Func<TResult> ^ function);
public System.Threading.Tasks.Task<TResult> StartNew<TResult> (Func<TResult> function);
member this.StartNew : Func<'Result> -> System.Threading.Tasks.Task<'Result>
Public Function StartNew(Of TResult) (function As Func(Of TResult)) As Task(Of TResult)

Parametri di tipo

TResult

Tipo del risultato disponibile tramite l'attività.

Parametri

function
Func<TResult>

Delegato della funzione che restituisce il risultato futuro da rendere disponibile tramite l'attività.

Restituisce

Task<TResult>

Attività avviata.

Eccezioni

Il valore dell'argomento function è null.

Esempio

L'esempio seguente è una semplice app di addizione che genera due numeri casuali e chiede all'utente di immettere la somma. Indica quindi se la risposta è corretta o, se la risposta dell'utente non è un numero valido, chiede all'utente di immettere nuovamente un numero valido. Viene StartNew utilizzato per creare gli Task<TResult> oggetti che restituiscono i numeri casuali da aggiungere.

using System;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      Random rnd = new Random();
      Task<int>[] tasks = new Task<int>[2];
      Object obj = new Object();
      
      while (true) {
         for (int ctr = 0; ctr <= 1; ctr++)
            tasks[ctr] = Task.Factory.StartNew(() => { int i = 0;
                                                       lock(obj) {
                                                          i = rnd.Next(101);
                                                       }
                                                       return i; });

         Task.WaitAll(tasks);
         int n1 = tasks[0].Result;
         int n2 = tasks[1].Result;
         int result = n1 + n2;
         bool validInput = false;
         while (! validInput) {
            ShowMessage(n1, n2);
            string userInput = Console.ReadLine();
            // Process user input.
            if (userInput.Trim().ToUpper() == "X") return;
            int answer;
            validInput = Int32.TryParse(userInput, out answer);
            if (! validInput)
               Console.WriteLine("Invalid input. Try again, but enter only numbers. ");
            else if (answer == result)
               Console.WriteLine("Correct!");
            else
               Console.WriteLine("Incorrect. The correct answer is {0}.", result);
         }
      }
   }

   private static void ShowMessage(int n1, int n2)
   {
      Console.WriteLine("\nEnter 'x' to exit...");
      Console.Write("{0} + {1} = ", n1, n2);
   }
}
// The example displays the following output:
//       Enter 'x' to exit...
//       15 + 11 = 26
//       Correct!
//
//       Enter 'x' to exit...
//       75 + 33 = adc
//       Invalid input. Try again, but enter only numbers.
//
//       Enter 'x' to exit...
//       75 + 33 = 108
//       Correct!
//
//       Enter 'x' to exit...
//       67 + 55 = 133
//       Incorrect. The correct answer is 122.
//
//       Enter 'x' to exit...
//       92 + 51 = 133
//       Incorrect. The correct answer is 143.
//
//       Enter 'x' to exit...
//       81 + 65 = x
   
Imports System.Threading.Tasks

Module AdditionTester
   Public Sub Main()
      Dim rnd As New Random()
      Dim tasks(1) As Task(Of Integer)
      Dim obj As New Object()
      
      Do While True
         For ctr As Integer = 0 To 1
            tasks(ctr) = Task.Factory.StartNew(Function()
                                                  Dim i As Integer
                                                  SyncLock(obj)
                                                     i = rnd.Next(101)
                                                  End SyncLock
                                                  Return i
                                               End Function)
         Next
         Task.WaitAll(tasks)
         Dim n1 As Integer = tasks(0).Result
         Dim n2 As Integer = tasks(1).Result
         Dim result As Integer = n1 + n2
         Dim validInput As Boolean = False
         Do While Not validInput
            ShowMessage(n1, n2)
            Dim userInput As String = Console.ReadLine()
            ' Process user input.
            If userInput.Trim().ToUpper = "X" Then Exit Sub
            Dim answer As Integer
            validInput = Int32.TryParse(userInput, answer)
            If Not validInput Then
               Console.WriteLine("Invalid input. Try again, but enter only numbers. ")
            Else If answer = result Then
               Console.WriteLine("Correct!")
            Else
               Console.WriteLine("Incorrect. The correct answer is {0}.", result)
            End If
         Loop
      Loop
   End Sub
   
   Private Sub ShowMessage(n1 As Integer, n2 As Integer)
      Console.WriteLine()
      Console.WriteLine("Enter 'x' to exit...")
      Console.Write("{0} + {1} = ", n1, n2)
   End Sub
End Module
' The example displays output like the following:
'       Enter 'x' to exit...
'       15 + 11 = 26
'       Correct!
'
'       Enter 'x' to exit...
'       75 + 33 = adc
'       Invalid input. Try again, but enter only numbers.
'
'       Enter 'x' to exit...
'       75 + 33 = 108
'       Correct!
'
'       Enter 'x' to exit...
'       67 + 55 = 133
'       Incorrect. The correct answer is 122.
'
'       Enter 'x' to exit...
'       92 + 51 = 133
'       Incorrect. The correct answer is 143.
'
'       Enter 'x' to exit...
'       81 + 65 = x

Commenti

La chiamata StartNew è funzionalmente equivalente alla creazione di un Task<TResult> oggetto usando uno dei relativi costruttori e quindi alla chiamata Start per pianificarla per l'esecuzione.

A partire dalla .NET Framework 4.5, è possibile chiamare il Task.Run<TResult>(Func<TResult>) metodo come modo rapido per chiamare StartNew con i parametri predefiniti. Si noti, tuttavia, che esiste una differenza di comportamento tra i due metodi relativi a : Task.Run<TResult>(Func<TResult>) per impostazione predefinita non consente alle attività figlio di iniziare con l'opzione TaskCreationOptions.AttachedToParent di collegarsi all'istanza corrente Task<TResult> , mentre StartNew<TResult>(Func<TResult>) lo fa. Per altre informazioni ed esempi di codice, vedere la voce Task.Run vs. Task.Factory.StartNew nel blog Programmazione parallela con .NET.

Vedi anche

Si applica a

StartNew<TResult>(Func<Object,TResult>, Object)

Crea e avvia un'attività di tipo TResult per il delegato e lo stato della funzione specificati.

public:
generic <typename TResult>
 System::Threading::Tasks::Task<TResult> ^ StartNew(Func<System::Object ^, TResult> ^ function, System::Object ^ state);
public System.Threading.Tasks.Task<TResult> StartNew<TResult> (Func<object,TResult> function, object state);
public System.Threading.Tasks.Task<TResult> StartNew<TResult> (Func<object?,TResult> function, object? state);
member this.StartNew : Func<obj, 'Result> * obj -> System.Threading.Tasks.Task<'Result>
Public Function StartNew(Of TResult) (function As Func(Of Object, TResult), state As Object) As Task(Of TResult)

Parametri di tipo

TResult

Tipo del risultato disponibile tramite l'attività.

Parametri

function
Func<Object,TResult>

Delegato della funzione che restituisce il risultato futuro da rendere disponibile tramite l'attività.

state
Object

Oggetto contenente i dati che devono essere usati dal delegato function.

Restituisce

Task<TResult>

Attività avviata.

Eccezioni

function è null.

Commenti

La chiamata a StartNew equivale funzionalmente alla creazione di un Task<TResult> oggetto usando uno dei relativi costruttori e quindi alla chiamata Start per pianificarla per l'esecuzione.

A partire dalla .NET Framework 4.5, è possibile usare il Run metodo con un Action oggetto come modo rapido per chiamare StartNew con i parametri predefiniti. Per altre informazioni ed esempi di codice, vedere la voce Task.Run vs. Task.Factory.StartNew nel blog Programmazione parallela con .NET.

Vedi anche

Si applica a

StartNew<TResult>(Func<TResult>, CancellationToken)

Crea e avvia un'attività di tipo TResult per il delegato della funzione e il token di annullamento specificati.

public:
generic <typename TResult>
 System::Threading::Tasks::Task<TResult> ^ StartNew(Func<TResult> ^ function, System::Threading::CancellationToken cancellationToken);
public System.Threading.Tasks.Task<TResult> StartNew<TResult> (Func<TResult> function, System.Threading.CancellationToken cancellationToken);
member this.StartNew : Func<'Result> * System.Threading.CancellationToken -> System.Threading.Tasks.Task<'Result>
Public Function StartNew(Of TResult) (function As Func(Of TResult), cancellationToken As CancellationToken) As Task(Of TResult)

Parametri di tipo

TResult

Tipo del risultato disponibile tramite l'attività.

Parametri

function
Func<TResult>

Delegato della funzione che restituisce il risultato futuro da rendere disponibile tramite l'attività.

cancellationToken
CancellationToken

Token di annullamento che verrà assegnato alla nuova attività.

Restituisce

Task<TResult>

Attività avviata.

Eccezioni

Provider CancellationToken già eliminato.

function è null.

Esempio

Nell'esempio seguente vengono usate due attività per calcolare la sequenza Fibonacci che termina in F100 = F100-1 + F100-2 con valori di inizializzazione F1= 1, F2 = 1 e F1 = 0, F2= 1. Circa la metà del tempo, un token di annullamento viene impostato come esecuzione delle operazioni. L'output dell'esempio mostra il risultato se le due attività vengono completate correttamente e se il token viene annullato.

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

public class Example
{
   public static void Main()
   {
      var rnd = new Random();
      var tasks = new List<Task<BigInteger[]>>();
      var source = new CancellationTokenSource();
      var token = source.Token;
      for (int ctr = 0; ctr <= 1; ctr++) {
         int start = ctr;
         tasks.Add(Task.Run( () => { BigInteger[] sequence = new BigInteger[100];
                                     sequence[0] = start;
                                     sequence[1] = 1;
                                     for (int index = 2; index <= sequence.GetUpperBound(0); index++) {
                                        token.ThrowIfCancellationRequested();
                                        sequence[index] = sequence[index - 1] + sequence[index - 2];
                                     }
                                     return sequence;
                                   }, token));
      }
      if (rnd.Next(0, 2) == 1)
         source.Cancel();
      try {
         Task.WaitAll(tasks.ToArray());
         foreach (var t in tasks)
            Console.WriteLine("{0}, {1}...{2:N0}", t.Result[0], t.Result[1],
                              t.Result[99]);
      }
      catch (AggregateException e) {
         foreach (var ex in e.InnerExceptions)
            Console.WriteLine("{0}: {1}", ex.GetType().Name, ex.Message);
      }
   }
}
// The example displays either the following output:
//    0, 1...218,922,995,834,555,169,026
//    1, 1...354,224,848,179,261,915,075
// or the following output:
//    TaskCanceledException: A task was canceled.
//    TaskCanceledException: A task was canceled.
Imports System.Collections.Generic
Imports System.Numerics
Imports System.Threading
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim rnd As New Random()
      Dim tasks As New List(Of Task(Of BigInteger()))
      Dim source As New CancellationTokenSource
      Dim token As CancellationToken = source.Token
      For ctr As Integer = 0 To 1
         Dim start As Integer = ctr
         tasks.Add(Task.Run(Function()
                               Dim sequence(99) As BigInteger
                               sequence(0) = start
                               sequence(1) = 1
                               For index As Integer = 2 To sequence.GetUpperBound(0)
                                  token.ThrowIfCancellationRequested()
                                  sequence(index) = sequence(index - 1) + sequence(index - 2)
                               Next
                               Return sequence
                            End Function, token))
      Next
      If rnd.Next(0, 2) = 1 Then source.Cancel
      Try
         Task.WaitAll(tasks.ToArray())
         For Each t In tasks
            Console.WriteLine("{0}, {1}...{2:N0}", t.Result(0), t.Result(1),
                              t.Result(99))
         Next
      Catch e As AggregateException
         For Each ex In e.InnerExceptions
            Console.WriteLine("{0}: {1}", ex.GetType().Name, ex.Message)
         Next
      End Try
   End Sub
End Module
' The example displays either the following output:
'    0, 1...218,922,995,834,555,169,026
'    1, 1...354,224,848,179,261,915,075
' or the following output:
'    TaskCanceledException: A task was canceled.
'    TaskCanceledException: A task was canceled.

Commenti

La chiamata StartNew è funzionalmente equivalente alla creazione di un Task<TResult> oggetto usando uno dei relativi costruttori e quindi alla chiamata Start per pianificarla per l'esecuzione.

A partire dalla .NET Framework 4.5, è possibile usare il Task.Run<TResult>(Func<TResult>, CancellationToken) metodo come metodo rapido per chiamare StartNew<TResult>(Func<TResult>, CancellationToken) con i parametri predefiniti. Si noti, tuttavia, che esiste una differenza di comportamento tra i due metodi relativi a : Task.Run<TResult>(Func<TResult>, CancellationToken) per impostazione predefinita non consente alle attività figlio di iniziare con l'opzione TaskCreationOptions.AttachedToParent di collegarsi all'istanza corrente Task<TResult> , mentre StartNew<TResult>(Func<TResult>, CancellationToken) lo fa. Per altre informazioni ed esempi di codice, vedere la voce Task.Run vs. Task.Factory.StartNew nel blog Programmazione parallela con .NET.

Vedi anche

Si applica a

StartNew<TResult>(Func<TResult>, TaskCreationOptions)

Crea e avvia un'attività di tipo TResult per il delegato della funzione e le opzioni di creazione specificati.

public:
generic <typename TResult>
 System::Threading::Tasks::Task<TResult> ^ StartNew(Func<TResult> ^ function, System::Threading::Tasks::TaskCreationOptions creationOptions);
public System.Threading.Tasks.Task<TResult> StartNew<TResult> (Func<TResult> function, System.Threading.Tasks.TaskCreationOptions creationOptions);
member this.StartNew : Func<'Result> * System.Threading.Tasks.TaskCreationOptions -> System.Threading.Tasks.Task<'Result>
Public Function StartNew(Of TResult) (function As Func(Of TResult), creationOptions As TaskCreationOptions) As Task(Of TResult)

Parametri di tipo

TResult

Tipo del risultato disponibile tramite l'attività.

Parametri

function
Func<TResult>

Delegato della funzione che restituisce il risultato futuro da rendere disponibile tramite l'attività.

creationOptions
TaskCreationOptions

Uno dei valori di enumerazione che controlla il comportamento dell'attività creata.

Restituisce

Task<TResult>

Attività avviata.

Eccezioni

function è null.

creationOptions specifica un valore TaskCreationOptions non valido. Per ulteriori informazioni, vedere la sezione Osservazioni di FromAsync(Func<AsyncCallback,Object,IAsyncResult>, Action<IAsyncResult>, Object, TaskCreationOptions).

Commenti

La chiamata a StartNew equivale in modo funzionale alla creazione di un Task<TResult> oggetto usando uno dei relativi costruttori e quindi chiamando Start per pianificarla per l'esecuzione.

A partire dalla .NET Framework 4.5, è possibile usare il Run metodo con un Action oggetto come modo rapido per chiamare StartNew con parametri predefiniti. Per altre informazioni ed esempi di codice, vedere la voce Task.Run vs. Task.Factory.StartNew nel blog Programmazione parallela con .NET.

Vedi anche

Si applica a

StartNew<TResult>(Func<Object,TResult>, Object, CancellationToken)

Crea e avvia un'attività di tipo TResult per il delegato di funzione, lo stato e il token di annullamento specificati.

public:
generic <typename TResult>
 System::Threading::Tasks::Task<TResult> ^ StartNew(Func<System::Object ^, TResult> ^ function, System::Object ^ state, System::Threading::CancellationToken cancellationToken);
public System.Threading.Tasks.Task<TResult> StartNew<TResult> (Func<object,TResult> function, object state, System.Threading.CancellationToken cancellationToken);
public System.Threading.Tasks.Task<TResult> StartNew<TResult> (Func<object?,TResult> function, object? state, System.Threading.CancellationToken cancellationToken);
member this.StartNew : Func<obj, 'Result> * obj * System.Threading.CancellationToken -> System.Threading.Tasks.Task<'Result>
Public Function StartNew(Of TResult) (function As Func(Of Object, TResult), state As Object, cancellationToken As CancellationToken) As Task(Of TResult)

Parametri di tipo

TResult

Tipo del risultato disponibile tramite l'attività.

Parametri

function
Func<Object,TResult>

Delegato della funzione che restituisce il risultato futuro da rendere disponibile tramite l'attività.

state
Object

Oggetto contenente i dati che devono essere usati dal delegato function.

cancellationToken
CancellationToken

Token di annullamento che verrà assegnato alla nuova attività.

Restituisce

Task<TResult>

Attività avviata.

Eccezioni

Provider CancellationToken già eliminato.

function è null.

Commenti

La chiamata a StartNew equivale in modo funzionale alla creazione di un Task<TResult> oggetto usando uno dei relativi costruttori e quindi chiamando Start per pianificarla per l'esecuzione.

A partire dalla .NET Framework 4.5, è possibile usare il Run metodo con un Action oggetto come modo rapido per chiamare StartNew con parametri predefiniti. Per altre informazioni ed esempi di codice, vedere la voce Task.Run vs. Task.Factory.StartNew nel blog Programmazione parallela con .NET.

Vedi anche

Si applica a

StartNew<TResult>(Func<Object,TResult>, Object, TaskCreationOptions)

Crea e avvia un'attività di tipo TResult per il delegato di funzione, lo stato e le opzioni di creazione specificati.

public:
generic <typename TResult>
 System::Threading::Tasks::Task<TResult> ^ StartNew(Func<System::Object ^, TResult> ^ function, System::Object ^ state, System::Threading::Tasks::TaskCreationOptions creationOptions);
public System.Threading.Tasks.Task<TResult> StartNew<TResult> (Func<object,TResult> function, object state, System.Threading.Tasks.TaskCreationOptions creationOptions);
public System.Threading.Tasks.Task<TResult> StartNew<TResult> (Func<object?,TResult> function, object? state, System.Threading.Tasks.TaskCreationOptions creationOptions);
member this.StartNew : Func<obj, 'Result> * obj * System.Threading.Tasks.TaskCreationOptions -> System.Threading.Tasks.Task<'Result>
Public Function StartNew(Of TResult) (function As Func(Of Object, TResult), state As Object, creationOptions As TaskCreationOptions) As Task(Of TResult)

Parametri di tipo

TResult

Tipo del risultato disponibile tramite l'attività.

Parametri

function
Func<Object,TResult>

Delegato della funzione che restituisce il risultato futuro da rendere disponibile tramite l'attività.

state
Object

Oggetto contenente i dati che devono essere usati dal delegato function.

creationOptions
TaskCreationOptions

Uno dei valori di enumerazione che controlla il comportamento dell'attività creata.

Restituisce

Task<TResult>

Attività avviata.

Eccezioni

function è null.

creationOptions specifica un valore TaskCreationOptions non valido. Per ulteriori informazioni, vedere la sezione Osservazioni di FromAsync(Func<AsyncCallback,Object,IAsyncResult>, Action<IAsyncResult>, Object, TaskCreationOptions).

Commenti

La chiamata a StartNew equivale in modo funzionale alla creazione di un Task<TResult> oggetto usando uno dei relativi costruttori e quindi chiamando Start per pianificarla per l'esecuzione.

A partire dalla .NET Framework 4.5, è possibile usare il Run metodo con un Action oggetto come modo rapido per chiamare StartNew con parametri predefiniti. Per altre informazioni ed esempi di codice, vedere la voce Task.Run vs. Task.Factory.StartNew nel blog Programmazione parallela con .NET.

Vedi anche

Si applica a

StartNew<TResult>(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions, TaskScheduler)

Crea e avvia un'attività di tipo TResult per il delegato di funzione, lo stato, il token di annullamento, le opzioni di creazione e l'utilità di pianificazione delle attività specificati.

public:
generic <typename TResult>
 System::Threading::Tasks::Task<TResult> ^ StartNew(Func<System::Object ^, TResult> ^ function, System::Object ^ state, System::Threading::CancellationToken cancellationToken, System::Threading::Tasks::TaskCreationOptions creationOptions, System::Threading::Tasks::TaskScheduler ^ scheduler);
public System.Threading.Tasks.Task<TResult> StartNew<TResult> (Func<object,TResult> function, object state, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskCreationOptions creationOptions, System.Threading.Tasks.TaskScheduler scheduler);
public System.Threading.Tasks.Task<TResult> StartNew<TResult> (Func<object?,TResult> function, object? state, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskCreationOptions creationOptions, System.Threading.Tasks.TaskScheduler scheduler);
member this.StartNew : Func<obj, 'Result> * obj * System.Threading.CancellationToken * System.Threading.Tasks.TaskCreationOptions * System.Threading.Tasks.TaskScheduler -> System.Threading.Tasks.Task<'Result>
Public Function StartNew(Of TResult) (function As Func(Of Object, TResult), state As Object, cancellationToken As CancellationToken, creationOptions As TaskCreationOptions, scheduler As TaskScheduler) As Task(Of TResult)

Parametri di tipo

TResult

Tipo del risultato disponibile tramite l'attività.

Parametri

function
Func<Object,TResult>

Delegato della funzione che restituisce il risultato futuro da rendere disponibile tramite l'attività.

state
Object

Oggetto contenente i dati che devono essere usati dal delegato function.

cancellationToken
CancellationToken

Token di annullamento che verrà assegnato alla nuova attività.

creationOptions
TaskCreationOptions

Uno dei valori di enumerazione che controlla il comportamento dell'attività creata.

scheduler
TaskScheduler

Utilità di pianificazione usata per pianificare l'attività creata.

Restituisce

Task<TResult>

Attività avviata.

Eccezioni

Provider CancellationToken già eliminato.

function è null.

-oppure- scheduler è null.

creationOptions specifica un valore TaskCreationOptions non valido. Per ulteriori informazioni, vedere la sezione Osservazioni di FromAsync(Func<AsyncCallback,Object,IAsyncResult>, Action<IAsyncResult>, Object, TaskCreationOptions).

Commenti

La chiamata a StartNew equivale in modo funzionale alla creazione di un Task<TResult> oggetto usando uno dei relativi costruttori e quindi chiamando Start per pianificarla per l'esecuzione.

A partire dalla .NET Framework 4.5, è possibile usare il Run metodo con un Action oggetto come modo rapido per chiamare StartNew con parametri predefiniti. Per altre informazioni ed esempi di codice, vedere la voce Task.Run vs. Task.Factory.StartNew nel blog Programmazione parallela con .NET.

Vedi anche

Si applica a