Condividi tramite


Task<TResult> Costruttori

Definizione

Inizializza un nuovo oggetto Task<TResult>.

Overload

Task<TResult>(Func<TResult>)

Inizializza un nuovo oggetto Task<TResult> con la funzione specificata.

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

Inizializza un nuovo oggetto Task<TResult> con la funzione e lo stato specificati.

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

Inizializza un nuovo oggetto Task<TResult> con la funzione specificata.

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

Inizializza un nuovo oggetto Task<TResult> con la funzione e le opzioni di creazione specificate.

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

Inizializza un nuovo oggetto Task<TResult> con l'azione, lo stato e le opzioni specificati.

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

Inizializza un nuovo oggetto Task<TResult> con l'azione, lo stato e le opzioni specificati.

Task<TResult>(Func<TResult>, CancellationToken, TaskCreationOptions)

Inizializza un nuovo oggetto Task<TResult> con la funzione e le opzioni di creazione specificate.

Task<TResult>(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions)

Inizializza un nuovo oggetto Task<TResult> con l'azione, lo stato e le opzioni specificati.

Task<TResult>(Func<TResult>)

Origine:
Future.cs
Origine:
Future.cs
Origine:
Future.cs

Inizializza un nuovo oggetto Task<TResult> con la funzione specificata.

public:
 Task(Func<TResult> ^ function);
public Task (Func<TResult> function);
new System.Threading.Tasks.Task<'Result> : Func<'Result> -> System.Threading.Tasks.Task<'Result>
Public Sub New (function As Func(Of TResult))

Parametri

function
Func<TResult>

Delegato che rappresenta il codice da eseguire nell'attività. Quando la funzione è stata completata, la proprietà Result dell'attività verrà impostata affinché restituisca il valore del risultato della funzione.

Eccezioni

Il valore dell'argomento function è null.

Il valore dell'argomento function è null.

Esempio

Nell'esempio seguente viene conteggiato il numero approssimativo di parole nei file di testo che rappresentano libri pubblicati. Ogni attività è responsabile dell'apertura di un file, della lettura asincrona dell'intero contenuto e del calcolo del conteggio delle parole tramite un'espressione regolare. Il Task.WaitAll(Task[]) metodo viene chiamato per assicurarsi che tutte le attività siano state completate prima di visualizzare il numero di parole di ogni libro nella console.

La creazione di istanze degli oggetti è separata dall'esecuzione dell'oggetto in questo esempio in modo che l'esempio possa garantire che ogni file esista. In caso contrario, viene visualizzato il nome del file mancante. In caso contrario, chiama il Task.Start metodo per avviare ogni attività.

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

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

      for (int ctr = 0; ctr < titles.Length; ctr++) {
         string s = titles[ctr];
         tasks[ctr] = new Task<int>( () => {
                                   // Number of words.
                                   int nWords = 0;
                                   // Create filename from title.
                                   string fn = s + ".txt";

                                   StreamReader sr = new StreamReader(fn);
                                   string input = sr.ReadToEndAsync().Result;
                                   sr.Close();
                                   nWords = Regex.Matches(input, pattern).Count;
                                   return nWords;
                                } );
      }
      // Ensure files exist before launching tasks.
      bool allExist = true;
      foreach (var title in titles) {
         string fn = title + ".txt";
         if (! File.Exists(fn)) {
            allExist = false;
            Console.WriteLine("Cannot find '{0}'", fn);
            break;
         }   
      }
      // Launch tasks 
      if (allExist) {
         foreach (var t in tasks)
            t.Start();
      
        await Task.WhenAll(tasks);
  
        Console.WriteLine("Word Counts:\n");
        for (int ctr = 0; ctr < titles.Length; ctr++)
           Console.WriteLine("{0}: {1,10:N0} words", titles[ctr], tasks[ctr].Result);
      }   
   }
}
// The example displays the following output:
//       Sister Carrie:    159,374 words
//       The Financier:    196,362 words
Imports System.IO
Imports System.Text.RegularExpressions
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim pattern As String = "\p{P}*\s+"
      Dim titles() As String = { "Sister Carrie",
                                 "The Financier" }
      Dim tasks(titles.Length - 1) As Task(Of Integer)

      For ctr As Integer = 0 To titles.Length - 1
         Dim s As String = titles(ctr)
         tasks(ctr) = New Task(Of Integer)( Function()
                                   ' Number of words.
                                   Dim nWords As Integer = 0
                                   ' Create filename from title.
                                   Dim fn As String = s + ".txt"

                                   Dim sr As New StreamReader(fn)
                                   Dim input As String = sr.ReadToEndAsync().Result
                                   sr.Close()
                                   nWords = Regex.Matches(input, pattern).Count
                                   Return nWords
                                End Function)
      Next

      ' Ensure files exist before launching tasks.
      Dim allExist As Boolean = True
      For Each title In titles
         Dim fn As String = title + ".txt"
         If Not File.Exists(fn) Then
            allExist = false
            Console.WriteLine("Cannot find '{0}'", fn)
            Exit For
         End If   
      Next
      ' Launch tasks 
      If allExist Then
         For Each t in tasks
            t.Start()
         Next
         Task.WaitAll(tasks)

         Console.WriteLine("Word Counts:")
         Console.WriteLine()
         For ctr As Integer = 0 To titles.Length - 1
         Console.WriteLine("{0}: {1,10:N0} words", titles(ctr), tasks(ctr).Result)
         Next
      End If   
   End Sub
End Module
' The example displays the following output:
'       Sister Carrie:    159,374 words
'       The Financier:    196,362 words

Il criterio \p{P}*\s+ di espressione regolare corrisponde a zero, uno o più caratteri di punteggiatura seguiti da uno o più caratteri di spazi vuoti. Presuppone che il numero totale di corrispondenze corrisponda al conteggio approssimativo delle parole.

Commenti

Questo costruttore deve essere usato solo in scenari avanzati in cui è necessario che la creazione e l'avvio dell'attività siano separati.

Anziché chiamare questo costruttore, il modo più comune per creare un'istanza di un Task<TResult> oggetto e avviare un'attività consiste nel chiamare i metodi e statici Task.Run<TResult>(Func<TResult>)TaskFactory<TResult>.StartNew(Func<TResult>) .

Se un'attività senza azione è necessaria solo per consentire al consumer di un'API di avere qualcosa da attendere, deve essere usato un oggetto TaskCompletionSource<TResult> .

Vedi anche

Si applica a

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

Origine:
Future.cs
Origine:
Future.cs
Origine:
Future.cs

Inizializza un nuovo oggetto Task<TResult> con la funzione e lo stato specificati.

public:
 Task(Func<System::Object ^, TResult> ^ function, System::Object ^ state);
public Task (Func<object,TResult> function, object state);
public Task (Func<object?,TResult> function, object? state);
new System.Threading.Tasks.Task<'Result> : Func<obj, 'Result> * obj -> System.Threading.Tasks.Task<'Result>
Public Sub New (function As Func(Of Object, TResult), state As Object)

Parametri

function
Func<Object,TResult>

Delegato che rappresenta il codice da eseguire nell'attività. Quando la funzione è stata completata, la proprietà Result dell'attività verrà impostata affinché restituisca il valore del risultato della funzione.

state
Object

Oggetto che rappresenta i dati che devono essere utilizzati dall'azione.

Eccezioni

Il valore dell'argomento function è null.

Il valore dell'argomento function è null.

Commenti

Anziché chiamare questo costruttore, il modo più comune per creare un'istanza di un Task<TResult> oggetto e avviare un'attività consiste nel chiamare il metodo statico TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object) . L'unico vantaggio offerto da questo costruttore è che consente di separare l'istanza dell'oggetto dalla chiamata all'attività.

Vedi anche

Si applica a

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

Origine:
Future.cs
Origine:
Future.cs
Origine:
Future.cs

Inizializza un nuovo oggetto Task<TResult> con la funzione specificata.

public:
 Task(Func<TResult> ^ function, System::Threading::CancellationToken cancellationToken);
public Task (Func<TResult> function, System.Threading.CancellationToken cancellationToken);
new System.Threading.Tasks.Task<'Result> : Func<'Result> * System.Threading.CancellationToken -> System.Threading.Tasks.Task<'Result>
Public Sub New (function As Func(Of TResult), cancellationToken As CancellationToken)

Parametri

function
Func<TResult>

Delegato che rappresenta il codice da eseguire nell'attività. Quando la funzione è stata completata, la proprietà Result dell'attività verrà impostata affinché restituisca il valore del risultato della funzione.

cancellationToken
CancellationToken

Oggetto CancellationToken da assegnare a questa attività.

Eccezioni

L'oggetto CancellationTokenSource che ha creato cancellationToken è già stato eliminato.

Il valore dell'argomento function è null.

Il valore dell'argomento function è null.

Commenti

Anziché chiamare questo costruttore, il modo più comune per creare un'istanza di un Task<TResult> oggetto e avviare un'attività consiste nel chiamare i metodi e statici Task.Run<TResult>(Func<TResult>, CancellationToken)TaskFactory<TResult>.StartNew(Func<TResult>, CancellationToken) . L'unico vantaggio offerto da questo costruttore è che consente di separare l'istanza dell'oggetto dalla chiamata all'attività.

Vedi anche

Si applica a

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

Origine:
Future.cs
Origine:
Future.cs
Origine:
Future.cs

Inizializza un nuovo oggetto Task<TResult> con la funzione e le opzioni di creazione specificate.

public:
 Task(Func<TResult> ^ function, System::Threading::Tasks::TaskCreationOptions creationOptions);
public Task (Func<TResult> function, System.Threading.Tasks.TaskCreationOptions creationOptions);
new System.Threading.Tasks.Task<'Result> : Func<'Result> * System.Threading.Tasks.TaskCreationOptions -> System.Threading.Tasks.Task<'Result>
Public Sub New (function As Func(Of TResult), creationOptions As TaskCreationOptions)

Parametri

function
Func<TResult>

Delegato che rappresenta il codice da eseguire nell'attività. Quando la funzione è stata completata, la proprietà Result dell'attività verrà impostata affinché restituisca il valore del risultato della funzione.

creationOptions
TaskCreationOptions

Oggetto TaskCreationOptions usato per personalizzare il comportamento dell'attività.

Eccezioni

L'argomento creationOptions specifica un valore non valido per TaskCreationOptions.

Il valore dell'argomento function è null.

Il valore dell'argomento function è null.

Commenti

Anziché chiamare questo costruttore, il modo più comune per creare un'istanza di un Task<TResult> oggetto e avviare un'attività consiste nel chiamare il metodo statico TaskFactory<TResult>.StartNew(Func<TResult>, TaskCreationOptions) . L'unico vantaggio offerto da questo costruttore è che consente di separare l'istanza dell'oggetto dalla chiamata all'attività.

Vedi anche

Si applica a

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

Origine:
Future.cs
Origine:
Future.cs
Origine:
Future.cs

Inizializza un nuovo oggetto Task<TResult> con l'azione, lo stato e le opzioni specificati.

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

Parametri

function
Func<Object,TResult>

Delegato che rappresenta il codice da eseguire nell'attività. Quando la funzione è stata completata, la proprietà Result dell'attività verrà impostata affinché restituisca il valore del risultato della funzione.

state
Object

Oggetto che rappresenta i dati che devono essere utilizzati dalla funzione.

cancellationToken
CancellationToken

Oggetto CancellationToken da assegnare alla nuova attività.

Eccezioni

L'oggetto CancellationTokenSource che ha creato cancellationToken è già stato eliminato.

Il valore dell'argomento function è null.

Il valore dell'argomento function è null.

Commenti

Anziché chiamare questo costruttore, il modo più comune per creare un'istanza di un Task<TResult> oggetto e avviare un'attività consiste nel chiamare il metodo statico TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object, CancellationToken) . L'unico vantaggio offerto da questo costruttore è che consente di separare l'istanza dell'oggetto dalla chiamata all'attività.

Vedi anche

Si applica a

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

Origine:
Future.cs
Origine:
Future.cs
Origine:
Future.cs

Inizializza un nuovo oggetto Task<TResult> con l'azione, lo stato e le opzioni specificati.

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

Parametri

function
Func<Object,TResult>

Delegato che rappresenta il codice da eseguire nell'attività. Quando la funzione è stata completata, la proprietà Result dell'attività verrà impostata affinché restituisca il valore del risultato della funzione.

state
Object

Oggetto che rappresenta i dati che devono essere utilizzati dalla funzione.

creationOptions
TaskCreationOptions

Oggetto TaskCreationOptions usato per personalizzare il comportamento dell'attività.

Eccezioni

L'argomento creationOptions specifica un valore non valido per TaskCreationOptions.

Il valore dell'argomento function è null.

Il valore dell'argomento function è null.

Commenti

Anziché chiamare questo costruttore, il modo più comune per creare un'istanza di un Task<TResult> oggetto e avviare un'attività consiste nel chiamare il metodo statico TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object, TaskCreationOptions) . L'unico vantaggio offerto da questo costruttore è che consente di separare l'istanza dell'oggetto dalla chiamata all'attività.

Vedi anche

Si applica a

Task<TResult>(Func<TResult>, CancellationToken, TaskCreationOptions)

Origine:
Future.cs
Origine:
Future.cs
Origine:
Future.cs

Inizializza un nuovo oggetto Task<TResult> con la funzione e le opzioni di creazione specificate.

public:
 Task(Func<TResult> ^ function, System::Threading::CancellationToken cancellationToken, System::Threading::Tasks::TaskCreationOptions creationOptions);
public Task (Func<TResult> function, System.Threading.CancellationToken cancellationToken, System.Threading.Tasks.TaskCreationOptions creationOptions);
new System.Threading.Tasks.Task<'Result> : Func<'Result> * System.Threading.CancellationToken * System.Threading.Tasks.TaskCreationOptions -> System.Threading.Tasks.Task<'Result>
Public Sub New (function As Func(Of TResult), cancellationToken As CancellationToken, creationOptions As TaskCreationOptions)

Parametri

function
Func<TResult>

Delegato che rappresenta il codice da eseguire nell'attività. Quando la funzione è stata completata, la proprietà Result dell'attività verrà impostata affinché restituisca il valore del risultato della funzione.

cancellationToken
CancellationToken

Oggetto CancellationToken che verrà assegnato alla nuova attività.

creationOptions
TaskCreationOptions

Oggetto TaskCreationOptions usato per personalizzare il comportamento dell'attività.

Eccezioni

L'oggetto CancellationTokenSource che ha creato cancellationToken è già stato eliminato.

L'argomento creationOptions specifica un valore non valido per TaskCreationOptions.

Il valore dell'argomento function è null.

Il valore dell'argomento function è null.

Commenti

Anziché chiamare questo costruttore, il modo più comune per creare un'istanza di un Task<TResult> oggetto e avviare un'attività consiste nel chiamare il metodo statico TaskFactory.StartNew<TResult>(Func<TResult>, CancellationToken, TaskCreationOptions, TaskScheduler) . L'unico vantaggio offerto da questo costruttore è che consente di separare l'istanza dell'oggetto dalla chiamata all'attività.

Vedi anche

Si applica a

Task<TResult>(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions)

Origine:
Future.cs
Origine:
Future.cs
Origine:
Future.cs

Inizializza un nuovo oggetto Task<TResult> con l'azione, lo stato e le opzioni specificati.

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

Parametri

function
Func<Object,TResult>

Delegato che rappresenta il codice da eseguire nell'attività. Quando la funzione è stata completata, la proprietà Result dell'attività verrà impostata affinché restituisca il valore del risultato della funzione.

state
Object

Oggetto che rappresenta i dati che devono essere utilizzati dalla funzione.

cancellationToken
CancellationToken

Oggetto CancellationToken da assegnare alla nuova attività.

creationOptions
TaskCreationOptions

Oggetto TaskCreationOptions usato per personalizzare il comportamento dell'attività.

Eccezioni

L'oggetto CancellationTokenSource che ha creato cancellationToken è già stato eliminato.

L'argomento creationOptions specifica un valore non valido per TaskCreationOptions.

Il valore dell'argomento function è null.

Il valore dell'argomento function è null.

Commenti

Anziché chiamare questo costruttore, il modo più comune per creare un'istanza di un Task<TResult> oggetto e avviare un'attività consiste nel chiamare il metodo statico TaskFactory<TResult>.StartNew(Func<Object,TResult>, Object, CancellationToken, TaskCreationOptions, TaskScheduler) . L'unico vantaggio offerto da questo costruttore è che consente di separare l'istanza dell'oggetto dalla chiamata all'attività.

Vedi anche

Si applica a