Bagikan melalui


TaskFactory<TResult> Kelas

Definisi

Menyediakan dukungan untuk membuat dan menjadwalkan Task<TResult> objek.

generic <typename TResult>
public ref class TaskFactory
public class TaskFactory<TResult>
type TaskFactory<'Result> = class
Public Class TaskFactory(Of TResult)

Jenis parameter

TResult

Nilai yang dikembalikan dari Task<TResult> objek yang dibuat oleh metode kelas ini.

Warisan
TaskFactory<TResult>

Contoh

Contoh berikut menggunakan properti statis Factory untuk melakukan dua panggilan ke TaskFactory<TResult>.StartNew metode . Tugas pertama mengembalikan array string yang diisi dengan nama file di direktori MyDocuments pengguna, sementara yang kedua mengembalikan array string yang diisi dengan nama subdirektori direktori MyDocuments pengguna. Kemudian memanggil TaskFactory.ContinueWhenAll(Task[], Action<Task[]>) metode , yang menampilkan informasi tentang jumlah file dan direktori dalam array yang dikembalikan oleh dua tugas setelah mereka menyelesaikan eksekusi.

using System;
using System.IO;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      Task<string[]>[] tasks = new Task<string[]>[2];
      String docsDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

      tasks[0] = Task<string[]>.Factory.StartNew( () => Directory.GetFiles(docsDirectory));
      tasks[1] = Task<string[]>.Factory.StartNew( () => Directory.GetDirectories(docsDirectory));

      Task.Factory.ContinueWhenAll(tasks, completedTasks => {
                                             Console.WriteLine("{0} contains: ", docsDirectory);
                                             Console.WriteLine("   {0} subdirectories", tasks[1].Result.Length);
                                             Console.WriteLine("   {0} files", tasks[0].Result.Length);
                                          } );
   }
}
// The example displays output like the following:
//       C:\Users\<username>\Documents contains:
//          24 subdirectories
//          16 files
Imports System.IO
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim tasks(1) As Task(Of String())
      Dim docsDirectory As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
      
      tasks(0) = Task(Of String()).Factory.StartNew( Function()Directory.GetFiles(docsDirectory) )
''                                        End Sub )
      tasks(1) = Task(Of String()).Factory.StartNew( Function() Directory.GetDirectories(docsDirectory) )
''                                        End Sub )
      Task.Factory.ContinueWhenAll(tasks, Sub(completedTasks)
                                             Console.WriteLine("{0} contains: ", docsDirectory)
                                             Console.WriteLine("   {0} subdirectories", tasks(1).Result.Length)
                                             Console.WriteLine("   {0} files", tasks(0).Result.Length)
                                          End Sub)
   End Sub
End Module
' The example displays output like the following:
'       C:\Users\<username>\Documents contains:
'          24 subdirectories
'          16 files

Keterangan

.NET menyediakan dua pabrik untuk membuat dan menjadwalkan tugas:

Kelas ini TaskFactory<TResult> memungkinkan Anda untuk melakukan hal berikut:

  • Buat tugas dan segera mulai dengan memanggil StartNew metode . Anda dapat memanggil kelebihan beban metode ini untuk membuat dan menjalankan tugas yang memerlukan argumen non-default.

    Peringatan

    Dimulai dengan .NET Framework 4.5, Task.Run metode ini menyediakan cara term mudah untuk membuat tugas dengan nilai konfigurasi default dan segera memulainya.

  • Buat tugas yang dimulai ketika salah satu tugas dalam array telah selesai dengan memanggil ContinueWhenAny metode atau ContinueWhenAny .

  • Buat tugas yang dimulai ketika semua tugas dalam array telah selesai dengan memanggil ContinueWhenAll metode atau ContinueWhenAll .

Properti statis Task<TResult>.Factory mengembalikan objek default TaskFactory<TResult> . Anda juga dapat memanggil salah TaskFactory<TResult> satu konstruktor kelas untuk mengonfigurasi Task<TResult> objek yang TaskFactory<TResult> dibuat kelas. Contoh berikut mengonfigurasi objek baru TaskFactory<TResult> untuk membuat tugas yang memiliki token pembatalan tertentu, opsi pembuatan tugas, opsi kelanjutan, dan penjadwal tugas yang dikustomisasi.

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

public class Example
{
   static CancellationTokenSource cts = new CancellationTokenSource();

   static TaskFactory<int> factory = new TaskFactory<int>(
      cts.Token,
      TaskCreationOptions.PreferFairness,
      TaskContinuationOptions.ExecuteSynchronously,
      new CustomScheduler());

   static void Main()
   {
      var t2 = factory.StartNew(() => DoWork());
      cts.Dispose();
   }

   static int DoWork()
   {
       /*...*/
       return DateTime.Now.Hour <= 12 ?  1 : 2;
    }
}
Imports System.Collections.Generic
Imports System.Threading
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim cts As New CancellationTokenSource()
      Dim factory As New TaskFactory(Of Integer)(
                         cts.Token,
                         TaskCreationOptions.PreferFairness,
                         TaskContinuationOptions.ExecuteSynchronously,
                         New CustomScheduler())

      Dim t2 = factory.StartNew(Function() DoWork())
      cts.Dispose()
   End Sub

   Function DoWork() As Integer
      Return If(Date.Now.Hour <= 12, 1, 2)
   End Function
End Module

Dalam kebanyakan kasus, Anda tidak perlu membuat instans baru TaskFactory<TResult> . Sebagai gantinya, Anda dapat menggunakan properti statis Task<TResult>.Factory , yang mengembalikan objek pabrik yang menggunakan nilai default. Anda kemudian dapat memanggil metodenya untuk memulai tugas baru atau menentukan kelanjutan tugas. Untuk ilustrasi, lihat contohnya.

Konstruktor

TaskFactory<TResult>()

Menginisialisasi instans TaskFactory<TResult> dengan konfigurasi default.

TaskFactory<TResult>(CancellationToken)

Menginisialisasi instans TaskFactory<TResult> dengan konfigurasi default.

TaskFactory<TResult>(CancellationToken, TaskCreationOptions, TaskContinuationOptions, TaskScheduler)

Menginisialisasi instans TaskFactory<TResult> dengan konfigurasi yang ditentukan.

TaskFactory<TResult>(TaskCreationOptions, TaskContinuationOptions)

Menginisialisasi instans TaskFactory<TResult> dengan konfigurasi yang ditentukan.

TaskFactory<TResult>(TaskScheduler)

Menginisialisasi instans TaskFactory<TResult> dengan konfigurasi yang ditentukan.

Properti

CancellationToken

Mendapatkan token pembatalan default untuk pabrik tugas ini.

ContinuationOptions

TaskContinuationOptions Mendapatkan nilai enumerasi untuk pabrik tugas ini.

CreationOptions

TaskCreationOptions Mendapatkan nilai enumerasi untuk pabrik tugas ini.

Scheduler

Mendapatkan penjadwal tugas untuk pabrik tugas ini.

Metode

ContinueWhenAll(Task[], Func<Task[],TResult>)

Membuat tugas kelanjutan yang akan dimulai setelah penyelesaian serangkaian tugas yang disediakan.

ContinueWhenAll(Task[], Func<Task[],TResult>, CancellationToken)

Membuat tugas kelanjutan yang akan dimulai setelah penyelesaian serangkaian tugas yang disediakan.

ContinueWhenAll(Task[], Func<Task[],TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Membuat tugas kelanjutan yang akan dimulai setelah menyelesaikan serangkaian Tugas yang disediakan.

ContinueWhenAll(Task[], Func<Task[],TResult>, TaskContinuationOptions)

Membuat tugas kelanjutan yang akan dimulai setelah menyelesaikan serangkaian Tugas yang disediakan.

ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>)

Membuat tugas kelanjutan yang akan dimulai setelah penyelesaian serangkaian tugas yang disediakan.

ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>, CancellationToken)

Membuat tugas kelanjutan yang akan dimulai setelah penyelesaian serangkaian tugas yang disediakan.

ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Membuat tugas kelanjutan yang akan dimulai setelah penyelesaian serangkaian tugas yang disediakan.

ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>[],TResult>, TaskContinuationOptions)

Membuat tugas kelanjutan yang akan dimulai setelah penyelesaian serangkaian tugas yang disediakan.

ContinueWhenAny(Task[], Func<Task,TResult>)

Membuat tugas kelanjutan yang akan dimulai setelah penyelesaian tugas apa pun dalam set yang disediakan.

ContinueWhenAny(Task[], Func<Task,TResult>, CancellationToken)

Membuat tugas kelanjutan yang akan dimulai setelah penyelesaian tugas apa pun dalam set yang disediakan.

ContinueWhenAny(Task[], Func<Task,TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Membuat tugas kelanjutan yang akan dimulai setelah penyelesaian tugas apa pun dalam set yang disediakan.

ContinueWhenAny(Task[], Func<Task,TResult>, TaskContinuationOptions)

Membuat tugas kelanjutan yang akan dimulai setelah penyelesaian tugas apa pun dalam set yang disediakan.

ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>)

Membuat tugas kelanjutan yang akan dimulai setelah penyelesaian tugas apa pun dalam set yang disediakan.

ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>, CancellationToken)

Membuat tugas kelanjutan yang akan dimulai setelah penyelesaian tugas apa pun dalam set yang disediakan.

ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)

Membuat tugas kelanjutan yang akan dimulai setelah penyelesaian tugas apa pun dalam set yang disediakan.

ContinueWhenAny<TAntecedentResult>(Task<TAntecedentResult>[], Func<Task<TAntecedentResult>,TResult>, TaskContinuationOptions)

Membuat tugas kelanjutan yang akan dimulai setelah penyelesaian tugas apa pun dalam set yang disediakan.

Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
FromAsync(Func<AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, Object)

Membuat tugas yang mewakili sepasang metode awal dan akhir yang sesuai dengan pola Model Pemrograman Asinkron.

FromAsync(Func<AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, Object, TaskCreationOptions)

Membuat tugas yang mewakili sepasang metode awal dan akhir yang sesuai dengan pola Model Pemrograman Asinkron.

FromAsync(IAsyncResult, Func<IAsyncResult,TResult>)

Membuat tugas yang menjalankan fungsi metode akhir saat yang ditentukan IAsyncResult selesai.

FromAsync(IAsyncResult, Func<IAsyncResult,TResult>, TaskCreationOptions)

Membuat tugas yang menjalankan fungsi metode akhir saat yang ditentukan IAsyncResult selesai.

FromAsync(IAsyncResult, Func<IAsyncResult,TResult>, TaskCreationOptions, TaskScheduler)

Membuat tugas yang menjalankan fungsi metode akhir saat yang ditentukan IAsyncResult selesai.

FromAsync<TArg1,TArg2,TArg3>(Func<TArg1,TArg2,TArg3,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, TArg2, TArg3, Object)

Membuat tugas yang mewakili sepasang metode awal dan akhir yang sesuai dengan pola Model Pemrograman Asinkron.

FromAsync<TArg1,TArg2,TArg3>(Func<TArg1,TArg2,TArg3,AsyncCallback, Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, TArg2, TArg3, Object, TaskCreationOptions)

Membuat tugas yang mewakili sepasang metode awal dan akhir yang sesuai dengan pola Model Pemrograman Asinkron.

FromAsync<TArg1,TArg2>(Func<TArg1,TArg2,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, TArg2, Object)

Membuat tugas yang mewakili sepasang metode awal dan akhir yang sesuai dengan pola Model Pemrograman Asinkron.

FromAsync<TArg1,TArg2>(Func<TArg1,TArg2,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, TArg2, Object, TaskCreationOptions)

Membuat tugas yang mewakili sepasang metode awal dan akhir yang sesuai dengan pola Model Pemrograman Asinkron.

FromAsync<TArg1>(Func<TArg1,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, Object)

Membuat tugas yang mewakili sepasang metode awal dan akhir yang sesuai dengan pola Model Pemrograman Asinkron.

FromAsync<TArg1>(Func<TArg1,AsyncCallback,Object,IAsyncResult>, Func<IAsyncResult,TResult>, TArg1, Object, TaskCreationOptions)

Membuat tugas yang mewakili sepasang metode awal dan akhir yang sesuai dengan pola Model Pemrograman Asinkron.

GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetType()

Mendapatkan dari instans Type saat ini.

(Diperoleh dari Object)
MemberwiseClone()

Membuat salinan dangkal dari saat ini Object.

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

Membuat dan memulai tugas.

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

Membuat dan memulai tugas.

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

Membuat dan memulai tugas.

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

Membuat dan memulai tugas.

StartNew(Func<TResult>)

Membuat dan memulai tugas.

StartNew(Func<TResult>, CancellationToken)

Membuat dan memulai tugas.

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

Membuat dan memulai tugas.

StartNew(Func<TResult>, TaskCreationOptions)

Membuat dan memulai tugas.

ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)

Berlaku untuk

Keamanan Thread

Semua anggota publik dan terlindungi aman dari TaskFactory<TResult> utas dan dapat digunakan secara bersamaan dari beberapa utas.

Lihat juga